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