как вставить бобовые пружины с одинаковым типом, но разными именами в конструктор без конфигурации xml - PullRequest
0 голосов
/ 09 апреля 2020

У меня есть два разных bean-компонента (один и тот же тип данных, разные аннотированные имена), которые я хочу использовать @Autowired в различных конструкторах. Существует множество статей и блогов с инструкциями:

xml конфигурация на основе, внедрение зависимостей членов, автоматическое подключение конструктора только с одним уникальным компонентом, и так далее и так далее

, но ничего такого, что соответствует всем требованиям в заголовке этого поста:

  1. Я не использую XML конфигурацию на основе

  2. Мои бины выглядят так :

    @Primary
    @Bean(name = TRACKING_DB)
    public DataSource trackingDataSource()
    {
        return dataSource(
          "com.mysql.jdbc.Driver",
          "jdbc:mysql://${SECRET_DEPLOY_TRACKING_DB_URL}/ci_ciccttrackingdatabase_dd?useSSL=true&requireSSL=true&verifyServerCertificate=true",
          "${SECRET_DEPLOY_TRACKING_DB_ID}",
          "${SECRET_DEPLOY_TRACKING_DB_PASS}"
        );
    }
    
    @Bean(name = REPORTING_DB)
    public DataSource reportingDataSource() {
    
        return dataSource(
          "com.microsoft.sqlserver.jdbc.SQLServerDriver",
          "${SECRET_APP_REPORTING_DB_URL}",
          "${SECRET_APP_REPORTING_DB_ID}",
          "${SECRET_APP_REPORTING_DB_PASS}"
        );
    }
    
  3. @ Qalifier не работает, то есть для членов, а не конструкторов

  4. @ значение не работает

  5. У меня есть конструкторы, которые должны выглядеть следующим образом из-за существующего кода, который я изменяю:

    @Autowired
    public CallDataAccess(DataSource dataSource) {
    
        ///...
    }
    

и

    @Autowired
    public EventDataAccess(DataSource dataSource) {

        ///...
    }

... но Spring делает попытки вставить String / значение в конструкторы, а не в компонент DataSource. Я получаю:

"Ошибка при создании bean-компонента с именем 'reportsCallDataAccess", определенного в файле xxx: неудовлетворенная зависимость, выраженная через параметр конструктора 0; вложенным исключением является org.springframework.beans.ConversionNotSupportedException: не удалось преобразовать значение типа' java .lang.String 'в требуемый тип' javax. sql .DataSource '; вложенное исключение: java .lang.IllegalStateException: Невозможно преобразовать значение типа' java .lang.String 'в требуемый тип' javax . sql .DataSource ': не найдено подходящих редакторов или стратегии преобразования "

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...