В моем проекте Spring-Boot есть небольшой класс, в котором я получаю некоторые значения из файла application.properties.Мой класс находится в папке src/main/java/com/company/package
, а файл свойств моего приложения - в src/main/resources/application.properties
.Это мой класс:
@Component
@Configuration
@PropertySource("classpath:application.properties")
public class ElasticConnection {
private static final String INDEX = "index_name";
public static final String TYPE = "type";
private String user;
private String password;
public ElasticConnection(@Value("${elasticsearch.user}") String user,
@Value("${elasticsearch.password}") String password){
this.user = user;
this.password = password;
}
Я автоматически подключаю этот класс к классу приложения:
@Configuration
@SpringBootApplication
public class ElasticApplication {
@Autowired
ElasticConnection elastic;
public static void main(String[] args) {
SpringApplication.run(ElasticApplication.class, args);
}
}
Теперь, как только конструктор класса ElasticConnectionПользователь и пароль установлены на null
.Я знаю, что значения читаются правильно, потому что InteliJ достаточно любезен, чтобы показать значение (пока вы не нажмете на @Value и снова не увидите «$ {asticsearch.user}»)
РЕДАКТИРОВАТЬ: это файл свойств приложения.
# App config
server.port=8070
# Local ElasticSearch instance configuration
elasticsearch.clustername = elasticsearch
elasticsearch.host = localhost
elasticsearch.port = 9300
#spring.main.allow-bean-definition-overriding=true
# Elasticsearch Settings
elasticsearch.user=test
elasticsearch.password=test