Sto leggendo il libro di inizio primavera (wiley press). Nel capitolo 2 c'è un esempio sulla configurazione Java e @Autowired
. Esso fornisce questo @Configuration
classeSpring @Autowired inserisce i fagioli per nome o per tipo?
@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;
}
}
e questa classe di fagioli regolare
public class AccountServiceImpl implements AccountService {
@Autowired
private AccountDao accountDao;
public void setAccountDao(AccountDao accountDao) {
this.accountDao = accountDao;
}
...
}
Quando eseguo il codice, funziona. Ma mi aspettavo un'eccezione perché ho definito 2 bean con lo stesso tipo nella configurazione.
ho capito che funziona così:
- se Primavera incontra più fagioli con le stesso tipo di verifica nome del campo.
- se trova un bean con il nome del campo obiettivo, inietta quel bean nel campo.
Non è questo che non va? C'è un bug nella gestione di Spring della configurazione di Java?