【Java Web开发学习】Spring环境profile
【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的更多相关文章
- 【Java Web开发学习】Spring MVC添加自定义Servlet、Filter、Listener
[Java Web开发学习]Spring MVC添加自定义Servlet.Filter.Listener 转载:https://www.cnblogs.com/yangchongxing/p/9968 ...
- 【Java Web开发学习】Spring MVC 使用HTTP信息转换器
[Java Web开发学习]Spring MVC 使用HTTP信息转换器 转载:https://www.cnblogs.com/yangchongxing/p/10186429.html @Respo ...
- 【Java Web开发学习】Spring JPA
[Java Web开发学习]Spring JPA 转载:https://www.cnblogs.com/yangchongxing/p/10082864.html 1.使用容器管理类型的JPA JND ...
- 【Java Web开发学习】Spring MVC 拦截器HandlerInterceptor
[Java Web开发学习]Spring MVC 拦截器HandlerInterceptor 转载:https://www.cnblogs.com/yangchongxing/p/9324119.ht ...
- 【Java Web开发学习】Spring MVC文件上传
[Java Web开发学习]Spring MVC文件上传 转载:https://www.cnblogs.com/yangchongxing/p/9290489.html 文件上传有两种实现方式,都比较 ...
- 【Java Web开发学习】Spring MVC异常统一处理
[Java Web开发学习]Spring MVC异常统一处理 文采有限,若有错误,欢迎留言指正. 转载:https://www.cnblogs.com/yangchongxing/p/9271900. ...
- 【Java Web开发学习】Spring加载外部properties配置文件
[Java Web开发学习]Spring加载外部properties配置文件 转载:https://www.cnblogs.com/yangchongxing/p/9136505.html 1.声明属 ...
- 【Java Web开发学习】Spring4条件化的bean
[Java Web开发学习]Spring4条件化的bean 转载:https://www.cnblogs.com/yangchongxing/p/9071960.html Spring4引入了@Con ...
- 【Java Web开发学习】Spring4整合thymeleaf视图解析
[Java Web开发学习]Spring4整合thymeleaf视图解析 目录 1.简单介绍2.简单例子 转载:https://www.cnblogs.com/yangchongxing/p/9111 ...
随机推荐
- 【计算机网络】TCP基础知识详解
1. TCP概念相关 [!NOTE] TCP(Transmission Control Protocol),又叫传输控制协议. TCP协议是面向连接的,可靠的,基于字节流的传输协议.在基于 TCP 进 ...
- 基于 cobbler 实现自动安装 linux 系统
使用 cobbler 实现自动安装 centos 6.7系统 1.yum install cobbler -y 安装 cobbler ,有依赖关系,会自动把 TFTP .HTTP 服务安装上:cobb ...
- 4.vim编辑器
把光标移动文件头 gg 把光标移动文件尾 G 移动到行首 ^ 移动到行尾 $ 移动到指定行 :n 回车
- 【Luogu P3387】缩点模板(强连通分量Tarjan&拓扑排序)
Luogu P3387 强连通分量的定义如下: 有向图强连通分量:在有向图G中,如果两个顶点vi,vj间(vi>vj)有一条从vi到vj的有向路径,同时还有一条从vj到vi的有向路径,则称两个顶 ...
- GO 单例模式
wiki百科: 单例模式,也叫单子模式,是一种常用的软件设计模式.在应用这个模式时,单例对象的类必须保证只有一个实例存在.许多时候整个系统只需要拥有一个的全局对象,这样有利于我们协调系统整体的行为.比 ...
- java学习引言
Java学习之路:不走弯路,就是捷径 0.引言 软件开发之路是充满荆棘与挑战之路,也是充满希望之路.Java学习也是如此,没有捷径可走.梦想像<天龙八部>中虚竹一样被无崖子醍醐灌顶而轻松获 ...
- 【开发工具 - Git】之本地项目托管到远程仓库
这里所说的“本地项目托管到远程仓库”,说的是:例如,我们在本地有一个写了很长时间的项目,现在想要托管到GitHub或码云上进行版本控制. 这个过程大致需要以下几个步骤: (1)在本地初始化Git项目本 ...
- 成功的面对对象语言的五个基本特性——Alan Kay
1.万物皆为对象. 将对象是为奇特的变量,它可以存储数据,除此之外,还可以要求他在自身上执行操作. 2.程序是对象的集合,他们通过发送消息来告知彼此所要做的. 要想请求一个对象,就必须对该对项发送一条 ...
- Docker虚拟化之<基础命令>
1.在docker hub中搜索镜像 docker search nginx 2.从docker镜像服务器拉取指定镜像或者库镜像 docker pull docker.io/nginx 3.列出系统当 ...
- js5——页面转换
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...