Spring @Autowired вводит бины по имени или по типу?

Я читаю книгу начала весны (wiley press). В главе 2 приведен пример настройки Java и@Autowired, Это обеспечивает это@Configuration учебный класс

@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;
    }
}

и этот обычный класс бобов

public class AccountServiceImpl implements AccountService {

    @Autowired
    private AccountDao accountDao;

    public void setAccountDao(AccountDao accountDao) {
        this.accountDao = accountDao;
    }
    ...
}

Когда я запускаю код, он работает. Но я ожидал исключения, потому что в конфигурации я определил 2 бина одного типа.

Я понял, что это работает так:

если Spring встречает несколько бинов одного типа, он проверяет имя поля.если он находит компонент с именем целевого поля, он вводит этот компонент в поле.

Разве это не так? Есть ли ошибка в обработке Spring конфигурации Java?

Ответы на вопрос(1)

Ваш ответ на вопрос