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 ...
随机推荐
- RocketMQ 4.5.1 单机环境搭建以及生产消费测试
为了学习和方便测试,总是要启动一个单机版的.下载 http://rocketmq.apache.org/dowloading/releases/ 1. 要先配置环境变量 ROCKETMQ_HOME E ...
- 【转帖】为什么有了Compose和Swarm,还会有Kubernetes的出现?
为什么有了Compose和Swarm,还会有Kubernetes的出现? https://www.cnblogs.com/chenqionghe/p/11474486.html 图非常好 一.k8s设 ...
- centos7双网卡绑定
# 概念 服务器存在多块网卡时,可以通过bond来实现多块网卡并在一起使用: # 模式 mode 0:load balancing (round-robin) Support:需要Switch支持 & ...
- JVM 配置常用参数和常用 GC 调优策略
链接:https://juejin.im/post/5c94a123f265da610916081f JVM 配置常用参数 堆参数 回收器参数 如上表所示,目前主要有串行.并行和并发三种,对于大内 ...
- Mac Mini(late 2014) 添加NVMe固态组Fusion Drive
我买的是Mac Mini(late 2014)中配,内置5400转1T机械硬盘,该配置即使到了2019年安装macOS Mojave系统依旧是够用的,但硬盘严重拖累了运行的速度.之前考虑到更换内置sa ...
- 【转】ZYNQ中三种实现GPIO的方式
版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/husipeng86/article/det ...
- JS Web API 拖拽对话框案例
<style> .login-header { width: 100%; text-align: right; height: 30px; font-size: 24px; line-he ...
- The One day 中位数的计算
""" 中位数是有序列表中间的数.如果列表长度是偶数,中位数则是中间两个数的平均值. 例如, [2,3,4] 的中位数是 3 [2,3] 的中位数是 (2 + 3) / ...
- node-red inject节点 debug节点 switch节点
inject节点: https://blog.csdn.net/geek_monkey/article/details/80737818 debug节点: https://blog.csdn.net/ ...
- Django之创建超级用户
本文链接来自:https://blog.csdn.net/HuaCode/article/details/79721673 首选创建一个新用户,用来登录Django管理网站,进入manage.py目录 ...