У меня есть класс с 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 при его подключении ??




вы можете использовать файлы ресурсов
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 ботинок?
этот файл конфигурации размещается вместе с основным файлом приложения загрузки Spring или в пакете параллельно с основным файлом.
Если у вас нет TransformUser, просто класс Transformer. Это работает?