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 ...
随机推荐
- JavaEE 期末总结
struts2部分 一.struts2框架的集成: 1.web.xml配置struts2过滤器:前端控制器.核心控制器 如果有多个过滤器,需要将该过滤器放置到最后一个 2.struts.xml配置:主 ...
- 一致性hash算法应用场景、详解与实现(JAVA)
一.概述 在分布式环境下,开发者通常会遇到一些分布存储的场景,例如数据库的分库分表(比如用户id尾号为1的放入数据库1,id尾号为2的放入数据库2):又如分布式缓存数据的获取(比如根据ip地址进行缓存 ...
- charles 4.2.1 Ubuntu破解版安装
charles 4.2.1 Ubuntu破解版安装 下载 charles-proxy-4.2.1_amd64.tar.gz 破解版 charles.jar 破解包 解压 sudo tar -zxvf ...
- PHP设计模式 - 解释器模式
给定一个语言, 定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中的句子. 角色: 环境角色(PlayContent):定义解释规则的全局信息. 抽象解释器(Empress):定 ...
- mac下php配置
打开/关闭服务 sudo apachectl start sudo apachectl stop 查看apche版本 apacectl -v 修改项目默认路径: 打开配置文件目录/private/et ...
- 通过Fastdfs进行文件上传服务(文件和图片的统一处理)
1.文件上传简单流程分析图: 2.Fastdfs介绍: Fastdfs由两个角色组成: Tracker(集群):调度(帮你找到有空闲的Storage) Storage(集群):文件存储(帮你保存文件或 ...
- Python之颜色的表示
字背景颜色范围:40----49 40:黑 41:深红 42:绿 43:黄色 44:蓝色 45:紫色 46:深绿 47:白色 字颜色:30-----------39 30:黑 31:红 32:绿 33 ...
- 转:使用Goproxy解决golang.org模块无法下载的问题
原文https://studygolang.com/articles/22277?fr=sidebar 简介 Goproxy 中国完全实现了 Go 的模块代理协议.并且它是一个由中国备受信赖的云服务提 ...
- 3.将模型添加到 ASP.NET Core MVC 应用
添加数据模型类 右键单击 Models 文件夹,然后单击“添加” > “类”. 将类命名“Movie”.向 Movie 类添加以下属性: using System;using System.Co ...
- Mybatis中使用association及collection进行自关联示例(含XML版与注解版)
XML版本: 实体类: @Data @ToString @NoArgsConstructor public class Dept { private Integer id; private Strin ...