N'Printemps @Autocâblés injecter des haricots par nom ou par type?
Je suis de lecture de début de printemps (wiley presse) livre. Dans le chapitre 2, il est un exemple
à propos de Java configuration et @Autowired
. Elle offre cette @Configuration
classe
@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;
}
}
et de la régularité de cette classe d'haricot
public class AccountServiceImpl implements AccountService {
@Autowired
private AccountDao accountDao;
public void setAccountDao(AccountDao accountDao) {
this.accountDao = accountDao;
}
...
}
Lorsque j'exécute le code, il fonctionne. Mais je m'attendais à une exception parce que j'ai défini 2 haricots avec le même type de configuration.
J'ai réalisé il fonctionne comme ceci:
- si le Printemps rencontres multiples, les haricots avec le même type, il vérifie le nom du champ.
- si il trouve un haricot avec le nom du champ cible, il injecte que la fève dans le domaine.
N'est-ce pas mal? Est-il un bug dans le Printemps de la manipulation de Java configuration?
Je comprends parfaitement pourquoi vous êtes confus par cela-parce que it la mauvaise conception, de l'OMI.
OriginalL'auteur Lidovic | 2015-05-20
Vous devez vous connecter pour publier un commentaire.
La la documentation explique cette
Alors, non, ce n'est pas un bug, c'est le comportement voulu. Le bean id (nom) sera utilisé comme une solution de secours si un type permettra à l'autowiring de ne pas trouver une seule correspondance bean.
@Autowired
annotations ont aucune place dans la classe. Encore une fois, DI doit être réfléchie et initialisé au niveau de l'application. Les Classes plus loin en bas de la chaîne ne devrait avoir aucune notion de DI.OriginalL'auteur Sotirios Delimanolis