Spring源码窥探之:@Profile
Spring为我们提供的多环境启动
1. 配置类,注入三个不同环境的数据源,并加上注解
- /**
- * description: 以下准备了三套不同环境的数据源
- *
- * @author 70KG
- * @date 2018/12/17
- */
- @Configuration
- public class MyConfig {
- @Bean
- @Profile("dev")
- public MySqlInfo mySqlInfoDev() {
- MySqlInfo mySqlInfo = new MySqlInfo();
- mySqlInfo.setUserName("zhangsan");
- mySqlInfo.setPassWord("1111");
- mySqlInfo.setDriver("com.mysql.jdbc.driver");
- System.out.println("dev数据源被注入。。。。。。");
- return mySqlInfo;
- }
- @Bean
- @Profile("test")
- public MySqlInfo mySqlInfoTest() {
- MySqlInfo mySqlInfo = new MySqlInfo();
- mySqlInfo.setUserName("lisi");
- mySqlInfo.setPassWord("2222");
- mySqlInfo.setDriver("com.mysql.jdbc.driver");
- System.out.println("test数据源被注入。。。。。。");
- return mySqlInfo;
- }
- @Bean
- @Profile("prod")
- public MySqlInfo mySqlInfoProd() {
- MySqlInfo mySqlInfo = new MySqlInfo();
- mySqlInfo.setUserName("wangwu");
- mySqlInfo.setPassWord("3333");
- mySqlInfo.setDriver("com.mysql.jdbc.driver");
- System.out.println("prod数据源被注入。。。。。。");
- return mySqlInfo;
- }
- }
2. 测试类,假设开启生产的数据源
- /**
- * description
- *
- * @author 70KG
- * @date 2018/12/17
- */
- public class Test01 {
- @Test
- public void test() {
- // 无参构造创建容器
- AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext();
- // 读取配置文件,并属性赋值
- ac.register(MyConfig.class);
- ac.getEnvironment().setActiveProfiles("prod");
- // 刷新容器
- ac.refresh();
- }
- }
3. 结果
- prod数据源被注入。。。。。。
4. 说明
@Profile不仅可以加在Bean上,还可以加在到类上,表示这个类所属的环境
还有一种方式让环境生效,配置虚拟机参数,-Dspring.profiles.active=prod
Spring源码窥探之:@Profile的更多相关文章
- Spring源码窥探之:注解方式的AOP原理
AOP入口代码分析 通过注解的方式来实现AOP1. @EnableAspectJAutoProxy通过@Import注解向容器中注入了AspectJAutoProxyRegistrar这个类,而它在容 ...
- Spring源码窥探之:声明式事务
1. 导入驱动,连接池,jdbc和AOP的依赖 <!-- c3p0数据库连接池 --> <dependency> <groupId>c3p0</groupId ...
- Spring源码窥探之:AOP注解
AOP也就是我们日常说的@面向切面编程,看概念比较晦涩难懂,难懂的是设计理念,以及这样设计的好处是什么.在Spring的AOP中,常用的几个注解如下:@Aspect,@Before,@After,@A ...
- Spring源码窥探之:Spring AOP初步使用
AOP即面向切面编程.它的底层实际是用了spring的动态代理,具体是JDK的代理还是CGLIB的代理,就视情况而定了.本博客园仅仅作为平时记录,显得有些杂乱无章,如果想了解动态代理,设计模式,请访问 ...
- Spring源码窥探之:@Value
1. 首先定义实体 /** * @author 70KG * @Title: Apple * @Description: 苹果实体 * @date 2018/10/22下午9:26 * @From w ...
- Spring源码窥探之:BeanPostProcessor
Spring的Bean后置处理器 1. 实体类 /** * @author 70KG * @Title: Train * @Description: * @date 2018/7/23下午11:31 ...
- Spring源码窥探之:Spring AOP初步
AOP(Aspect Oriented Programming):即我们常说的面向切面编程. 什么是AOP?AOP是在我们原来写的代码的基础上,进行一定的包装,比如在方法执行前.方法返回后.方法抛出异 ...
- Spring源码窥探之:单实例Bean的创建过程
finishBeanFactoryInitialization(beanFactory);初始化剩下的所有的单实例(非懒加载)Bean(Instantiate all remaining (non-l ...
- Spring源码窥探之:扩展原理BeanDefinitionRegistryPostProcessor
BeanDefinitionRegistryPostProcessor继承自BeanFactoryPostProcessor,其中有两个接口,postProcessBeanDefinitionRegi ...
随机推荐
- SpringBoot系列教程web篇之过滤器Filter使用指南
web三大组件之一Filter,可以说是很多小伙伴学习java web时最早接触的知识点了,然而学得早不代表就用得多.基本上,如果不是让你从0到1写一个web应用(或者说即便从0到1写一个web应用) ...
- Java 中成员变量被局部变量所隐藏
Java 中局部变量与成员变量同名时,局部变量会隐藏成员变量.如果我们想访问成员变量,可以使用 this 关键字. class Test { private int value = 10; void ...
- CentOS 5 源
# The mirror system uses the connecting IP address of the client and the # update status of each mir ...
- 洛谷P5022 旅行 题解
前面几个代码都是部分分代码,最后一个才是AC了的,所以最后一个有详细注释 安利一发自己的Blog 这是提高组真题,233有点欧拉回路的感觉. 题目大意: 一个 连通 图,双向边 ,无重边 , 访问图中 ...
- GIL全局解释锁,死锁,信号量,event事件,线程queue,TCP服务端实现并发
一.GIL全局解释锁 在Cpython解释器才有GIL的概念,不是python的特点 在Cpython解释器中,同一个进程下开启的多线程,同一时刻只能有一个线程执行,无法利用多核优势. 1.GIL介绍 ...
- Go基础编程实践(一)—— 操作字符串
修剪空格 strings包中的TrimSpace函数用于去掉字符串首尾的空格. package main import ( "fmt" "strings" ) ...
- 【题解】Luogu P5288 [HNOI2019]多边形
原题传送门 HN的题目就是毒瘤 我们有以下猜想: 1.最后所有的线都连到了n号点上 2.最小步数应该为n-3-已经连到n号点的线段数量 本来有些边\((a_i,n)\)会将整个图分割成很多个区间.对于 ...
- 属性动画 补间动画 帧动画 基本使用案例 MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
- C# vb .net实现缩放特效滤镜
在.net中,如何简单快捷地实现Photoshop滤镜组中的缩放特效呢?答案是调用SharpImage!专业图像特效滤镜和合成类库.下面开始演示关键代码,您也可以在文末下载全部源码: 设置授权 第一步 ...
- 浅谈分词算法基于字的分词方法(HMM)
前言 在浅谈分词算法(1)分词中的基本问题我们讨论过基于词典的分词和基于字的分词两大类,在浅谈分词算法(2)基于词典的分词方法文中我们利用n-gram实现了基于词典的分词方法.在(1)中,我们也讨论了 ...