从 JNDI 为 SpringBoot 设置 Spring @Profile
Setting Spring @Profile from JNDI for SpringBoot
我正在将我的 SpringBoot 应用程序部署到 Tomcat 8.5 容器。
与此处描述的类似:http://docs.spring.io/spring-boot/docs/current/reference/html/howto-traditional-deployment.html 我修改了我的 SpringBootApplication,因此它可以部署为 war。
@SpringBootApplication
public class Application extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(Application.class);
}
}
类似于这个问题Activating Spring @Profile Using JNDI我不希望应用程序使用 JNDI 条目 select 活动配置文件。
我添加了一个 EnvironmentApplicationContextInitializer
与接受的答案中显示的相同。
但是:我不使用任何 web.xml
。因此配置文件未被拾取和使用。
如何使用 EnvironmentApplicationContextInitializer
创建 SpringBootApplication?
感谢 M Deinum's 评论,我找到了解决方案:
@SpringBootApplication
public class Application extends SpringBootServletInitializer {
public static void main(String[] args) {
// this would be used if run via java -jar service.war
// SpringApplication app = new SpringApplication(Application.class);
// CustomApplicationContextInitializer initializer = new CustomApplicationContextInitializer();
// app.addInitializers(initializer);
// app.run(args);
SpringApplication.run(Application.class, args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
// this will be used within an app container
CustomApplicationContextInitializer initializer = new CustomApplicationContextInitializer();
return builder.initializers(initializer).sources(Application.class);
}
}
注意 builder.initializers(initializer)
部分。
我正在将我的 SpringBoot 应用程序部署到 Tomcat 8.5 容器。 与此处描述的类似:http://docs.spring.io/spring-boot/docs/current/reference/html/howto-traditional-deployment.html 我修改了我的 SpringBootApplication,因此它可以部署为 war。
@SpringBootApplication
public class Application extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(Application.class);
}
}
类似于这个问题Activating Spring @Profile Using JNDI我不希望应用程序使用 JNDI 条目 select 活动配置文件。
我添加了一个 EnvironmentApplicationContextInitializer
与接受的答案中显示的相同。
但是:我不使用任何 web.xml
。因此配置文件未被拾取和使用。
如何使用 EnvironmentApplicationContextInitializer
创建 SpringBootApplication?
感谢 M Deinum's 评论,我找到了解决方案:
@SpringBootApplication
public class Application extends SpringBootServletInitializer {
public static void main(String[] args) {
// this would be used if run via java -jar service.war
// SpringApplication app = new SpringApplication(Application.class);
// CustomApplicationContextInitializer initializer = new CustomApplicationContextInitializer();
// app.addInitializers(initializer);
// app.run(args);
SpringApplication.run(Application.class, args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
// this will be used within an app container
CustomApplicationContextInitializer initializer = new CustomApplicationContextInitializer();
return builder.initializers(initializer).sources(Application.class);
}
}
注意 builder.initializers(initializer)
部分。