У меня есть один базовый абстрактный класс скажет А, который расширяется от другого абстрактного класса B и, наконец, один конкретный класс С простирающегося B.@Autowired для источника данных в абстрактном классе не работают и получить нулевой объект
Здесь в Класс C пытается получить DataSource autowired в базовом Abract класса А. Но @Autowired
не работает в абстрактном классе и даже получить null
в SOP (DataSource)
Если я autowire dataSource
в конкретном классе с, его работы.
Пожалуйста, помогите мне в этом. Я хочу использовать общий базовый класс для получения dataSource. Но @Autowired
в нем не работает.
Будет очень полезно, если кто-то даст решение с примером.
Заранее спасибо ..
Пример кода:
abstract Class A
{
@Autowired DataSource dataSource;
setConnection(){ sop(dataSource); }
}
abstract Class B extends A
{ -- Method conn()
{ setConnection();}
}
Class C extends B
{
Invoke conn();
}
Вы определили сканирование базового пакета в конфигурации весны? –
Опубликовать некоторый фактический код вместо псевдокода. Непонятно, где вызывается метод 'conn()' и то, как вы на самом деле создаете экземпляры. В принципе поле '@ Autowired' не может быть нулевым, если вы не вызываете методы в конструкторе, тогда поля не устанавливаются ИЛИ, когда вы сами создаете новые экземпляры (они находятся вне контроля Spring и не будут вставляться). Также, если вы используете Spring, я предлагаю использовать 'JdbcTemplate' вместо того, чтобы взломать и управлять соединениями самостоятельно. –