【问题标题】:Setting Spring @Profile from JNDI for SpringBoot从 JNDI 为 Spring Boot 设置 Spring @Profile
【发布时间】:2017-01-17 09:08:48
【问题描述】:

我正在将我的 SpringBoot 应用程序部署到 Tomcat 8.5 容器。 与此处描述的类似:http://docs.spring.io/spring-boot/docs/current/reference/html/howto-traditional-deployment.html 我修改了我的 SpringBootApplication,所以它可以作为战争部署。

@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 条目来选择活动配置文件。

我添加了一个EnvironmentApplicationContextInitializer,与接受的答案中显示的相同。

但是:我不使用任何web.xml。所以配置文件没有被拾取和使用。

如何使用EnvironmentApplicationContextInitializer 制作SpringBootApplication?

【问题讨论】:

  • 您不需要它...只需将SPRING_PROFILES_ACTIVE 注册为JNDI 条目(或spring.profiles.active),它就会被读取。你不需要其他任何东西。
  • 谢谢,但是(类似于链接的问题)我必须重用已经存在的 JNDI 条目,并且映射该条目也不是一个选项。所以我想知道如何在使用 spring boot 的链接问题中获得公认的解决方案。
  • 将其添加为initializer

标签: spring tomcat spring-boot jndi


【解决方案1】:

感谢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) 部分。

【讨论】:

    猜你喜欢
    • 2016-08-28
    • 1970-01-01
    • 1970-01-01
    • 2013-10-14
    • 1970-01-01
    • 2013-03-26
    • 2016-06-12
    • 2018-12-13
    • 1970-01-01
    相关资源
    最近更新 更多