【Java Web开发学习】Spring 环境profile

转载:http://www.cnblogs.com/yangchongxing/p/8890702.html

开发、测试、生产环境往往是不同的,我们需要将应用从一个环境迁移到另外一个环境,这时候就牵扯到不同环境配置是不同的。

Spring提供了@Profile注解来指定bean属于哪一个profile

1、配置@Profile注解,该注解可用于类也可用于方法

用于类上只有当该profile是激活状态时,这个类的bean才能被创建

package cn.ycx.web.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile; import cn.ycx.web.model.Painter;
import cn.ycx.web.model.Player; @Configuration
@Profile("dev")
public class TestConfig {
@Bean
public Player player() {
return new Player();
}
@Bean
public Painter painter() {
return new Painter();
}
}

用于方法上只有当该profile是激活状态时,标注@Bean的方法才能被创建bean

package cn.ycx.web.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile; import cn.ycx.web.model.Painter;
import cn.ycx.web.model.Player;
@Configuration
public class TestConfig {
@Bean
@Profile("prod")
public Player player() {
return new Player();
}
@Bean
@Profile("dev")
public Painter painter() {
return new Painter();
}
}

2、激活profile

Spring根据两个独立的属性来确定激活那个profile。spring.profiles.active和spring.profiles.default。spring.profiles.active比spring.profiles.default优先级高,当设置了spring.profiles.active属性值那么就用它的值来确定激活那个profile;只有当spring.profiles.active没有设置的时候才会去查找spring.profiles.default属性值并用它的值来确定激活那个profile。当两个值都没设置时就没有激活的profile。

spring.profiles.active和spring.profiles.default可以为复数,多个值用逗号隔开。例如:spring.profiles.active=dev,play

有多种方式来设置这两个值:

1.作为DispatcherServlet的初始化参数

2.作为Web应用的上下文参数

3.作为JNDI条目

4.作为环境变量

5.作为JVM的系统属性

6.在集成测试环境上使用@ActiveProfiles注解

对于web应用个人喜欢在DispatcherServlet初始化参数和应用上下文参数指定spring.profiles.default值,通过环境变量指定spring.profiles.active值,这样就能在需要改变的地方轻松改变

  <context-param>
<param-name>spring.profiles.default</param-name>
<param-value>prod</param-value>
</context-param>
<servlet>
<servlet-name>ds</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<!-- 也可通过classpath指定路径 -->
<param-value>\WEB-INF\ds-servlet.xml</param-value>
</init-param>
<init-param>
<param-name>spring.profiles.default</param-name>
<param-value>prod</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>

默认激活prod,通过下面的方式激活dev。

选用环境变量

windows系统

注意:我的机器重启系统之后才生效了

spring.profiles.active=dev

ubuntu系统

当前用户

$ vim ~/.bashrc
追加 export spring.profiles.active=dev
$ source ~/.bashrc

所有用户

# vim /etc/profile
追加 export spring.profiles.active=dev
# source /etc/profile

标注@Profile("dev")的Bean就会创建

【Java Web开发学习】Spring环境profile的更多相关文章

  1. 【Java Web开发学习】Spring MVC添加自定义Servlet、Filter、Listener

    [Java Web开发学习]Spring MVC添加自定义Servlet.Filter.Listener 转载:https://www.cnblogs.com/yangchongxing/p/9968 ...

  2. 【Java Web开发学习】Spring MVC 使用HTTP信息转换器

    [Java Web开发学习]Spring MVC 使用HTTP信息转换器 转载:https://www.cnblogs.com/yangchongxing/p/10186429.html @Respo ...

  3. 【Java Web开发学习】Spring JPA

    [Java Web开发学习]Spring JPA 转载:https://www.cnblogs.com/yangchongxing/p/10082864.html 1.使用容器管理类型的JPA JND ...

  4. 【Java Web开发学习】Spring MVC 拦截器HandlerInterceptor

    [Java Web开发学习]Spring MVC 拦截器HandlerInterceptor 转载:https://www.cnblogs.com/yangchongxing/p/9324119.ht ...

  5. 【Java Web开发学习】Spring MVC文件上传

    [Java Web开发学习]Spring MVC文件上传 转载:https://www.cnblogs.com/yangchongxing/p/9290489.html 文件上传有两种实现方式,都比较 ...

  6. 【Java Web开发学习】Spring MVC异常统一处理

    [Java Web开发学习]Spring MVC异常统一处理 文采有限,若有错误,欢迎留言指正. 转载:https://www.cnblogs.com/yangchongxing/p/9271900. ...

  7. 【Java Web开发学习】Spring加载外部properties配置文件

    [Java Web开发学习]Spring加载外部properties配置文件 转载:https://www.cnblogs.com/yangchongxing/p/9136505.html 1.声明属 ...

  8. 【Java Web开发学习】Spring4条件化的bean

    [Java Web开发学习]Spring4条件化的bean 转载:https://www.cnblogs.com/yangchongxing/p/9071960.html Spring4引入了@Con ...

  9. 【Java Web开发学习】Spring4整合thymeleaf视图解析

    [Java Web开发学习]Spring4整合thymeleaf视图解析 目录 1.简单介绍2.简单例子 转载:https://www.cnblogs.com/yangchongxing/p/9111 ...

随机推荐

  1. nyoj 114-某种序列 (python EOFError, List, append)

    114-某种序列 内存限制:64MB 时间限制:3000ms 特判: No 通过数:6 提交数:13 难度:4 题目描述: 数列A满足An = An-1 + An-2 + An-3, n >= ...

  2. 浅谈Node中的模块化

    关于这篇文章早在去年年初的时候我就想写一片关于模块化的文章,但是推到现在才来完成也有很多好处,巩固之前对Node的理解.毕竟在我目前的项目中还没有一款项目是用到了Node开发,所以导致我对Node的一 ...

  3. vue3.0里的生命周期函数

  4. JavaScript返回格式化的时间字符串

    http://www.w3school.com.cn/jsref/jsref_getMinutes.asp 由 getMinutes() 返回的值是一个两位的数字.不过返回值不总是两位的,如果该值小于 ...

  5. 【Spring】简述@Configuration配置类注册BeanDefinition到Spring容器的过程

    概述 本文以SpringBoot应用为基础,尝试分析基于注解@Configuration的配置类是如何向Spring容器注册BeanDefinition的过程 其中主要分析了 Configuratio ...

  6. &#128293;《手把手教你》系列练习篇之1-python+ selenium自动化测试(详细教程)

    1.简介 相信各位小伙伴或者同学们通过前面已经介绍了的Python+Selenium基础篇,通过前面几篇文章的介绍和练习,Selenium+Python的webUI自动化测试算是 一只脚已经迈入这个门 ...

  7. Oracle的高水位线

    一.什么是水位线 所有的oracle段都会有一个在段内容纳数据的上线,把这个上限成为“high water mark”,这是一个标记,用来说明已经有多少没有使用的数据块分配给这个段,原则上high w ...

  8. 新闻实时分析系统 Spark2.X分布式弹性数据集

    1.三大弹性数据集介绍 1)概念 2)优缺点对比 2.Spark RDD概述与创建方式 1)概述 在集群背后,有一个非常重要的分布式数据架构,即弹性分布式数据集(resilientdistribute ...

  9. JavaScript笔记三

    1.数据类型 - JS中一共分成六种数据类型 - String 字符串 - Number 数值 - Boolean 布尔值 - Null 空值 - Undefined 未定义 - Object 对象 ...

  10. day02_Requests模块

    1.anaconda的安装 1.1 .安装可执行程序 1.2 .配置环境变量 ​ 根据环境变量的先后顺序去查找可执行程序文件,如果查找到就执行,如果查找不到就报错. ​ anaconda主要配置: ​ ...