Ich lese Anfang Frühling (Wiley Press) Buch. In Kapitel 2 gibt es ein Beispiel über Java-Konfiguration und @Autowired
. Es bietet diese @Configuration
KlasseWird Spring @Autowired Bohnen nach Name oder nach Typ injizieren?
@Configuration
public class Ch2BeanConfiguration {
@Bean
public AccountService accountService() {
AccountServiceImpl bean = new AccountServiceImpl();
return bean;
}
@Bean
public AccountDao accountDao() {
AccountDaoInMemoryImpl bean = new AccountDaoInMemoryImpl();
//depedencies of accountDao bean will be injected here...
return bean;
}
@Bean
public AccountDao accountDaoJdbc() {
AccountDaoJdbcImpl bean = new AccountDaoJdbcImpl();
return bean;
}
}
und diese regelmäßig Bean-Klasse
public class AccountServiceImpl implements AccountService {
@Autowired
private AccountDao accountDao;
public void setAccountDao(AccountDao accountDao) {
this.accountDao = accountDao;
}
...
}
Wenn ich den Code ausführen, es funktioniert. Aber ich habe eine Ausnahme erwartet, weil ich 2 Beans vom gleichen Typ in der Konfiguration definiert habe.
Ich erkennen, dass es funktioniert wie folgt:
- wenn Frühling Feldnamen mehrere Bohnen mit gleichem Typ begegnet prüft.
- Wenn eine Bean mit dem Namen des Zielfelds gefunden wird, wird diese Bean in das Feld injiziert.
Ist das nicht falsch? Gibt es einen Fehler bei der Handhabung der Java-Konfiguration in Spring?