Spring, Bean, конструктор-аргумент в виде строки - PullRequest
0 голосов
/ 01 ноября 2019

Я получаю исключение: не найден квалифицируемый компонент для зависимости [java.lang.String]: ожидается как минимум 1 компонент, который квалифицируется как кандидат для автоматической передачи.

В bean.xml

<bean id = "database" class = "com.price.compare.service.DAO" scope="singleton">
    <constructor-arg index="0" type = "java.lang.String" value="localhost"/>
    <constructor-arg index="1" type = "java.lang.String" value="5432"/>
</bean>

DAO.java


    @Component
    public class DAO {
        private final String host;
        private final String port;
        public DAO(String host, String port) {
            this.host = host;
            this.port = port;
        }
        @PostConstruct
        public void init() {
            // custom initialization logic
        }
    }

1 Ответ

3 голосов
/ 01 ноября 2019

Вы определили боб дважды;в XML-конфигурации и в виде компонента @Component.

При использовании аннотации @Component компонент выбирается во время сканирования компонента. Однако, поскольку обязательные строковые аргументы не ясны во время сканирования компонента, генерируется исключение.

Удалите аннотацию @Component из вашего компонента, чтобы ваш компонент конфигурации XML был единственным компонентом DAO.

...