正在读取静态方法中的application.properties



当我在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。有没有其他方法可以在静态方法中读取数据?

尝试类似的东西

@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);
}
}

想要实现目标,最好的方法是使用springbean本身,它是所有配置的父级org.springframework.core.env.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的bean,并从Environment对象获取任何属性值。

最新更新