Как автоматически подключить компонент, имеющий конструктор с аргументами в приложении SpringBoot

У меня есть класс с Autowired Constructor.

теперь, когда я автоматически подключаю этот объект класса к своему классу. как передать аргументы конструктору ??

пример кода: Класс с Autowired Constructor:

@Component
public class Transformer {
    private String dataSource;
    @Autowired
    public Transformer(String dataSource)
    {
        this.dataSource = dataSource;
    }
}

Класс, использующий autowire для компонента, имеющего конструктор с аргументами:

@Component
    public class TransformerUser {
        private String dataSource;
        @Autowired
        public TransformerUser(String dataSource)
        {
            this.dataSource = dataSource;
        }
        @Autowired
        Transformer transformer;

    }

этот код не работает с сообщением

"Unsatisfied dependency expressed through constructor parameter 0"

while creating bean of type Transformer.

как передать аргументы в Transformer при его подключении ??

Если у вас нет TransformUser, просто класс Transformer. Это работает?

pvpkiran 30.05.2018 11:36
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
5
1
9 076
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

вы можете использовать файлы ресурсов

1) определите файл, например database.properties, и поместите переменную, например

datasource=example

в этом файле

2) определить класс конфигурации

@Configuration
@PropertySource(value = {"classpath:resources/database.properties"})
public class PKEServiceFactoryMethod {

   private final Environment environment;

   @Bean
   public String dataSource() {
      return environment.getProperty("dataSource");
   }
}

также вы можете использовать заполнитель, который в этом случае намного лучше использования конструктора

@Component
@PropertySource(value = {"classpath:resources/database.properties"})
public class Transformer {
    @Value("${dataSource}")
    private String dataSource;
}
Ответ принят как подходящий
package com.example.demo;

import org.springframework.beans.factory.annotation.Autowired;

import lombok.extern.slf4j.Slf4j;

@Slf4j
public class Transformer {
    private String datasource;

    @Autowired
    public Transformer(String datasource) {
        this.datasource=datasource;
        log.info(datasource);
    }
}

Затем создайте файл конфигурации

package com.example.demo;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class BeanConfig {
    @Bean
    public Transformer getTransformerBean() {
        return new Transformer("hello spring");
    }

    @Bean
    public String getStringBean() {
        return new String();
    }
}

Где следует разместить этот файл конфигурации в структуре каталогов проекта Spring ботинок?

amy 13.05.2021 21:53

этот файл конфигурации размещается вместе с основным файлом приложения загрузки Spring или в пакете параллельно с основным файлом.

Dildeep Singh 04.06.2021 12:16

Другие вопросы по теме