Spring.profile实现开发、测试和生产环境的配置和切换

Spring.profile实现开发、测试和生产环境的配置和切换

软件开发过程一般涉及“开发 -> 测试 -> 部署上线”多个阶段,每个阶段的环境的配置参数会有不同,如数据源,文件路径等。为避免每次切换环境时都要进行参数配置等繁琐的操作,可以通过spring的profile功能来进行配置参数的切换。

以我用到的项目的实际情况为例,首先可以在resources文件夹下分别为每个环境建立单独的文件夹(也可以额外建立一个common文件夹,用于存放公共的参数配置文件),每个文件夹下面存放对应的环境所需的配置文件,就像这样子:

Spring.profile实现开发、测试和生产环境的配置和切换_第1张图片

在resources文件夹下建立applicationContext-profile.xml文件,用来定义不同的profile:

复制代码



    spring profile配置

    
    
        
    

    
    
        
    
    
    
    
        
    

复制代码

这样就实现了通过profile标记不同的环境,接下来就可以通过设置spring.profiles.default和spring.profiles.active这两个属性来激活和使用对应的配置文件。default为默认,如果没有通过active来指定,那么就默认使用default定义的环境。

这两个属性可以通过多种方法来设置:

  • 在web.xml中作为web应用的上下文参数context-param;
  • 在web.xml中作为DispatcherServlet的初始化参数;
  • 作为JNDI条目;
  • 作为环境变量;
  • 作为JVM的系统属性;
  • 在集成测试类上,使用@ActiveProfiles注解配置。

前两者都可以在web.xml文件中设置:

复制代码



    Archetype Created Web Application

    
        contextConfigLocation
        
            classpath*:/applicationContext*.xml
        
    

    
    
        spring.profiles.default
        development
    

    
    
    
        spring.profiles.active
        development
    

    
        appServlet
        org.springframework.web.servlet.DispatcherServlet
        
        
            spring.profiles.default
            development
        
        1
    
    
        appServlet
        /
    

复制代码

激活指定的环境,也可以通过JVM参数来设置,可以在tomcat的启动脚本中加入以下JVM参数来激活:

-Dspring.profiles.active="production"

 

在程序中,也可以通过 @Profile("...") 对某些资源进行注解,这样只有当选择对应的环境时,才会产生对应的bean,如:

复制代码
@Bean
@Profile("production")    
    public DataSource jndiDataSource(){
        JndiObjectFactoryBean jofb=new JndiObjectFactoryBean();
        jofb.setJndiName("jndi/iDS");
        jofb.setResourceRef(true);
        jofb.setProxyInterface(xxx.class);
        return (DataSource) jofb.getObject();
    }
}
复制代码

 

参考:

1.  Spring-profile设置

2.  通过 spring 容器内建的 profile 功能实现开发环境、测试环境、生产环境配置自动切换

转载于:https://www.cnblogs.com/handsome1013/p/7447121.html

你可能感兴趣的:(Spring.profile实现开发、测试和生产环境的配置和切换)