`

How to set active spring 3.1 environment profile via a properites file and not v

阅读更多

 

来源:http://stackoverflow.com/questions/8587489/how-to-set-active-spring-3-1-environment-profile-via-a-properites-file-and-not-v

 

We use the new environment profiles feature of spring 3.1. We currently set the active profile by setting the environment variable spring.profiles.active=xxxxx on the server to which we deploy the application.

We think this is a suboptimal solution as the war file we want to deploy should just have an additional properties file which sets the environment in which the spring app context should load so the deployment is not dependent on some env var set on the server.

I tried to figure out how to do that and found:

ConfigurableEnvironment.setActiveProfiles()

which I can use to programmatically set the profile but then I still don't know where and when to execute this code. Somewhere where the spring context loads up? Can I load the parameter I want to pass to the method from a properties file?

UPDATE: I just found at docs which I might be able to implement to set the active profile?

 

answer:

 

The answer from Thomasz is valid as long as the profile name can be provided statically in the web.xml or one uses the new XML-less configuration type where one could programmatically load the profile to set from a properties file.

As we still use the XML version I investigated further and found the following nice solution where you implement your own ApplicationContextInitializer where you just add a new PropertySource with a properties file to the list of sources to search for environment specific configuration settings. in the example below one could set the spring.profiles.active property in the env.properties file.

 

 

public class P13nApplicationContextInitializer implements ApplicationContextInitializer<ConfigurableApplicationContext> {

 

    private static Logger LOG = LoggerFactory.getLogger(P13nApplicationContextInitializer.class);

 

    @Override

    public void initialize(ConfigurableApplicationContext applicationContext) {

        ConfigurableEnvironment environment = applicationContext.getEnvironment();

        try {

            environment.getPropertySources().addFirst(new ResourcePropertySource("classpath:env.properties"));

            LOG.info("env.properties loaded");

        } catch (IOException e) {

            // it's ok if the file is not there. we will just log that info.

            LOG.info("didn't find env.properties in classpath so not loading it in the AppContextInitialized");

        }

    }

 

}

 

You then need to add that initializer as a parameter to the ContextLoaderListener of spring as follows to your web.xml:

 

<context-param>

    <param-name>contextInitializerClasses</param-name>

    <param-value>somepackage.P13nApplicationContextInitializer</param-value>

</context-param>

<listener>

    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>

</listener>

 

分享到:
评论

相关推荐

    log4j.properites

    log4j的配置文档。可以直接放到项目中使用。不用再到网上找配置代码

    eclipse-properties文件插件

    eclipse-properties文件插件 问题 在Struct2在读取语言包文件language.properties属性文件,如果文件中包含中文,会出现乱码... 如果还不能用Properites Editor打开,则文件右击 -&gt; Open With -&gt; PropertiesEditor即可

    springboot-jwt-demo:这是一个使用了springboot+springSecurity+jwt实现的基于token的权限管理的一个demo

    这是一个使用了springboot+springSecurity+jwt实现的基于token的权限管理的一个demo 具体说明可以看 使用 更改一下application.properites的数据库的一些配置信息,然后就可以运行了 首先注册的url是/auth/register ...

    springMVC工程实例及讲解文档

    SpringMVC是Spring框架的一个模块,专为构建Web应用程序提供模型-视图-控制器(MVC)架构。本文将深入探讨SpringMVC工程实例的创建、配置和运行,以及与MySQL数据库的集成。 首先,SpringMVC的核心在于它提供了一个...

    如何快速创建一个maven项目

    首先,我们通过File-&gt;New-&gt;Maven Project进入创建Maven项目的面板 Maven项目面板,此时我们必须选中Create a simple project复选框,然后下一步: 输入项目信息,(1)首先输入域名,(2)输入项目名,(3)Web...

    svn-importer-1.1

    用于将CVS导入SVN库,本版本对应的JAVA版本是1.5,可放心使用。使用方法,先配置config.properites,然后使用run.bat option config-file 命令,单独执行run.bat可查看各参数作用。

    达梦数据库驱动jar包

    2、Properites-&gt;Java Compiler,右侧JDK Compilance栏,Compiler compilance level选择1.4; 二、Jdk1.5工程 1、Properties-&gt;Java Build Path-&gt;Libraries目录添加:Dm7JdbcDriver15.jar、Dm7Dialect15.jar; 2、...

    stardog-release:BOSH 发布 http

    Zookeeper PIDFILE 位置错误,当前导出 PIDFILE=/var/vcap/store/zookeeper/zookeeper_server.pid stardog-node 中的 slf4j 包应配置为使用 log4j 从 STARDOG_INSTALL=${JOB_DIR}/packages/stardog/s

    Cadence-原理图批量修改元器件属性.doc

    3. 选中“Place each part entry on a separate line”,并输入想要导出的参数,其中必须选择“Reference”,这是器件的唯一标识符。 二、修改 BOM 内容 修改 BOM 的内容可以按照自己的需求来修改。步骤如下: 1....

    开发利器之一键文件同步工具

    3.config.properites为工程运行配置文件,NEED_SYN_FILE_PATH:为待同步文件名列表的路径, SRC_PATH:源路径,DEST_PATH:目的路径。 4.工程运行完毕会在控制台打印运行结果,复制失败的注意检查路径 以下为运行...

    C# 多語言切換功能 Resource和XML兩種資源

    在C#开发中,实现多语言切换功能是提高软件国际化和本地化能力的重要步骤。本文将详细介绍如何使用Resource和XML两种资源方式来实现这一功能,同时覆盖如何支持各种控件如菜单、页签、ListView和树形节点的多语言...

    SsHome_Ver2.0:升级的SsHome

    SsHome_Ver2.0技术网站链接Bootstrap4 Spring文献 GitHub OAuth 2.0 OKHttp api-getUsers-demo新版本mysql修改root密码时提示语法错误的解决方法彻底解决mysql中文乱码 Json在线编辑器 Markdown编辑器项目部署说明 1...

    tomcat6.0 配log4j日志的必须文件及配置过程

    tomcat6.0 配log4j日志的必须文件及配置过程 tomcat6-------lib | |--------tomcat-juli-... | |--------log4j.properites | |----bin |--------tomcat-juli.jar 最后把log4j.properties里的配置写好就可以了。

    springboot-jwt-demo:测试JWT转载

    这是一个使用了springboot + springSecurity + jwt实现的基于令牌的权限管理的一个演示 具体说明可以看 使用 更改一下application.properites的数据库的一些配置信息,然后就可以运行了 首先注册的url是/auth/...

    wicket1.4更改默认的resource key

    例如API的MaximumValidator系统验证默认显示'${input}' is smaller than the minimum of ${minimum}. 这个API就是在properites中的key

    基于matlab-GUI简易计算器的设计

    此外,我们还需要了解一些其他重要概念,如数据属性(Data Properites)、事件数据(Event Data)和 GUIDE选项(GUIDE Options)。数据属性存储了控件的状态信息,如文本或颜色;事件数据是当控件触发事件时传递的...

    jsp+servlet+ajax完成类似yahoo,google那样的动态搜索框

    类似yahoo,google那样的动态搜索框,自己增加了上下框的功能 把DButils的那个properties的路径设置为该文件的绝对路径,然后其他的数据库配置可以到db.properites里面配置就可以了

    android-14-src.rar

    android-14-src.rar 解压到android的sdk 的对应的版本下面,然后右键项目中的android.jar---》properites --&gt;java source Attacherment --&gt;external Folder ---&gt;找到刚才解压的文件夹---&gt;ok

    android-15-src

    android-15-src.rar 解压到android的sdk 的对应的版本下面,然后右键项目中的android.jar---》properites --&gt;java source Attacherment --&gt;external Folder ---&gt;找到刚才解压的文件夹---&gt;ok

    T_Antry-Socket-Test.zip

    介绍了如何通过Socket连接服务器,同时还介绍了一下封装过程,为了能够更好的介绍,main...正好借此机会,也介绍一下单例,properites和C/S的内容,至于json和服务部分,本次案例裁剪掉,希望在下次的分享中可以介绍。

Global site tag (gtag.js) - Google Analytics