Spring не может автоматически подключить мой объект? Можно ли автоматически связать объект внутри абстрактного класса. Предположим, что все схемы представлены в application-context.xml
Вопрос: Какая аннотация должна быть на базовых и расширяющих классах (если таковые имеются) @Service @Component?
Пример
abstract class SuperMan {
@Autowire
private DatabaseService databaseService;
abstract void Fly();
protected void doSuperPowerAction(Thing thing) {
//busy code
databaseService.save(thing);
}
}
Расширяющийся класс
public class SuperGirl extends SuperMan {
@Override
public void Fly() {
//busy code
}
public doSomethingSuperGirlDoes() {
//busy code
doSuperPowerAction(thing)
}
application-context.xml
<context:component-scan base-package="com.baseLocation" />
<context:annotation-config/>
Что при необходимости в какой-либо операции базы данных в SuperGirl
, Вы ввели бы ее снова в SuperGirl
.
я думаю, что основная идея использует ту же ссылку на объект в различных классах. Таким образом что относительно этого:
//There is no annotation about Spring in the abstract part.
abstract class SuperMan {
private final DatabaseService databaseService;
public SuperMan(DatabaseService databaseService) {
this.databaseService = databaseService;
}
abstract void Fly();
protected void doSuperPowerAction(Thing thing) {
//busy code
databaseService.save(thing);
}
}
<час> @Component
public class SuperGirl extends SuperMan {
private final DatabaseService databaseService;
@Autowired
public SuperGirl (DatabaseService databaseService) {
super(databaseService);
this.databaseService = databaseService;
}
@Override
public void Fly() {
//busy code
}
public doSomethingSuperGirlDoes() {
//busy code
doSuperPowerAction(thing)
}
, По-моему, введите когда-то выполненный везде :)