#java #spring #spring-boot
#java #весна #весенняя загрузка
Вопрос:
У меня есть приведенный ниже код, когда я статически помещаю некоторые свойства в SpringApplicationBuilder
@SpringBootApplication(scanBasePackages = { "com" })
public class Application extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplicationBuilder parentBuilder = new SpringApplicationBuilder(Application.class);
parentBuilder.child(RestConfiguration.class, SwaggerConfig.class)
.properties("server.port:9093")).web(WebApplicationType.SERVLET).run(args);
}
}
Я хочу переместить свойства в файл application.properties
application.port.query=9093
Раньше я @value
читал из файла приложения, но получаю null. Есть ли другой способ считывания данных в статическом методе?
Ответ №1:
попробуйте что-то вроде этого
@Configuration
@ConfigurationProperties("application")
class A {
public static int queryPort;
@Value("${port.query:9093}")
public void setQueryPort(final int portQuery){
A.queryPort = portQuery;
}
}
public class Application extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplicationBuilder parentBuilder = new SpringApplicationBuilder(Application.class);
parentBuilder.child(RestConfiguration.class, SwaggerConfig.class)
.properties(A.queryPort)).web(WebApplicationType.SERVLET).run(args);
}
}
Ответ №2:
Предпочтительный способ достижения того, чего вы пытаетесь достичь, — использовать сам компонент spring, который является родительским для всех ваших конфигураций org.springframework.core.env.Environment
@SpringBootApplication(scanBasePackages = {"com"})
public class Application {
public static void main(String[] args) {
ConfigurableApplicationContext applicationContext =
SpringApplication.run(Application.class, args);
Environment environment = applicationContext.getBean(Environment.class);
String propertyValue = environment.getProperty("any.property.from.configuration")
}
}
В вашем случае использования просто получите компонент объекта Environment
и из Environment
него получите любое значение свойства.