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的更多相关文章

  1. Spring源码窥探之:注解方式的AOP原理

    AOP入口代码分析 通过注解的方式来实现AOP1. @EnableAspectJAutoProxy通过@Import注解向容器中注入了AspectJAutoProxyRegistrar这个类,而它在容 ...

  2. Spring源码窥探之:声明式事务

    1. 导入驱动,连接池,jdbc和AOP的依赖 <!-- c3p0数据库连接池 --> <dependency> <groupId>c3p0</groupId ...

  3. Spring源码窥探之:AOP注解

    AOP也就是我们日常说的@面向切面编程,看概念比较晦涩难懂,难懂的是设计理念,以及这样设计的好处是什么.在Spring的AOP中,常用的几个注解如下:@Aspect,@Before,@After,@A ...

  4. Spring源码窥探之:Spring AOP初步使用

    AOP即面向切面编程.它的底层实际是用了spring的动态代理,具体是JDK的代理还是CGLIB的代理,就视情况而定了.本博客园仅仅作为平时记录,显得有些杂乱无章,如果想了解动态代理,设计模式,请访问 ...

  5. Spring源码窥探之:@Value

    1. 首先定义实体 /** * @author 70KG * @Title: Apple * @Description: 苹果实体 * @date 2018/10/22下午9:26 * @From w ...

  6. Spring源码窥探之:BeanPostProcessor

    Spring的Bean后置处理器 1. 实体类 /** * @author 70KG * @Title: Train * @Description: * @date 2018/7/23下午11:31 ...

  7. Spring源码窥探之:Spring AOP初步

    AOP(Aspect Oriented Programming):即我们常说的面向切面编程. 什么是AOP?AOP是在我们原来写的代码的基础上,进行一定的包装,比如在方法执行前.方法返回后.方法抛出异 ...

  8. Spring源码窥探之:单实例Bean的创建过程

    finishBeanFactoryInitialization(beanFactory);初始化剩下的所有的单实例(非懒加载)Bean(Instantiate all remaining (non-l ...

  9. Spring源码窥探之:扩展原理BeanDefinitionRegistryPostProcessor

    BeanDefinitionRegistryPostProcessor继承自BeanFactoryPostProcessor,其中有两个接口,postProcessBeanDefinitionRegi ...

随机推荐

  1. C++ 智能指针 boost::scoped_ptr分析

    1.scoped_ptr的实现原理及特性 特性:scoped_ptr和auto_ptr类似,但最大的区别就是不能转让管理权限,也就是说scoped_ptr禁止用户进行拷贝和赋值 实现原理:如何才能禁止 ...

  2. Java开发笔记(一百四十二)JavaFX的对话框

    JavaFX的对话框主要分为提示对话框和文件对话框两类,其中提示对话框又分作消息对话框.警告对话框.错误对话框.确认对话框四种.这四种对话框都使用Alert控件表达,并通过对话框类型加以区分,例如Al ...

  3. webbench网站测压工具源码分析

    /* * (C) Radim Kolar 1997-2004 * This is free software, see GNU Public License version 2 for * detai ...

  4. Linux基础(02)MakeFile的创建和使用

    makefile是生成文件的脚本 , 把当前文件下的.c文件生成.o文件和可执行程序 SRC = $(wildcard *.c) OBJS = $(patsubst %.c,%.o,$(SRC)) C ...

  5. 改變帳款性質別以利排序沖帳才不會有問題,把19->17,把12->17

    Cxrp400 應收 LET ls_sql = SELECT xrccdocno,xrccseq,xrcc001,xrca035,xrca014, , xrca015,xrca006,xrcc008, ...

  6. 查询系统table条数

    ), RowCnt INT) EXEC sp_MSforeachtable 'INSERT INTO temp SELECT ''?'',COUNT(*) FROM ?' SELECT TableNa ...

  7. 工信部要求应用商店上新 App 检查 IPv6,这里有一份 IPv6 快速部署指南

    7 月 25 日,工业和信息化部信息通信发展司组织召开部署推进 IPv6 网络就绪专项行动电视电话会议.会议指出,加快推进 IPv6 规模部署,构建高速率.广普及.全覆盖.智能化的下一代互联网,是互联 ...

  8. 安装macOS时遇到Unable to unmount volume for repair异常导致无法完成安装的解决办法

    方法一: 使用终端命令行制作完macos安装U盘后,务必将.IAProductInfo文件放到U盘的根目录(非EFI分区的) sudo /Applications/Install\ macOS\ Si ...

  9. volatile 作用

    volatile使用场景:线程间共享变量需要使用 volatile 关键字标记,确保线程能够读取到更新后的最新变量值. volatile关键字的目的是告诉虚拟机: 1.每次访问变量时,总是获取主内存的 ...

  10. C#——零散学习1

    C#——零散学习1 //结构体(与C语言相似) struct Position { public float x; public float y;         //不一定需要把结构体成员设置为pu ...