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. latex 写大论文图目录中图注过长解决方案

    写论文(尤其是学位论文)的时候,Figure通常都是有很长的注释,而Latex的list of figures似乎不能换行(看到有换行的,不过感觉不够美观). 再说,list of figures里面 ...

  2. mac下php配置

    打开/关闭服务 sudo apachectl start sudo apachectl stop 查看apche版本 apacectl -v 修改项目默认路径: 打开配置文件目录/private/et ...

  3. RDA的使用和说明

    一.RDA 说明 RDA(RemoteDiagnostic Agent)是oracle用来收集.分析数据库的工具,运行该工具不会改变系统的任何参数,RDA收集的相关数据非常全面,可以简化我们日常监控. ...

  4. 虚拟机CentOS创建/使用快照

    快照 1.什么是快照 说的直白一点,就是创建一个备份.当执行了不可逆的错误操作后,可以通过快照用来恢复系统 2.创建快照的三种模式 挂载状态下创建快照 开机状态下创建快照 关机状态下创建快照 3.如何 ...

  5. Locust性能测试-环境准备与基本使用 转自:悠悠

    前言 提到性能测试,大部分小伙伴想到的就是LR和jmeter这种工具,小编一直不太喜欢写这种工具类的东西,我的原则是能用代码解决的问题,尽量不去用工具. python里面也有一个性能测试框架Locus ...

  6. mongoDB 分组并对分组结果筛选类似于SQL中的(group by xxx having ) 附带Java代码

    今天需要做一个筛选程序,因为数据放在mongodb中,没写过分组的查询语句,查了一些资料,终于写出来了,分享给各位小伙伴 需求是 查询 学员 在2019-07-29之后未同步的数据(同一个学员需要2条 ...

  7. 【解决方案】ArcGIS导入要素集后没反应

    内容源自:ArcGIS10.2基础教程(丁华) 书上要求: 1.在“练习”文件夹中新建一个名为“沈阳”的个人地理数据库和名为“shenyang”的要素集,设置地理坐标为“Xi'an 1980”,高程坐 ...

  8. deppin Linux下安装docker

    首先楼主用的是deppin15.11 docker 简介:Docker作为一个软件集装箱化平台,可以让开发者构建应用程序时,将它与其依赖环境一起打包到一个容器中,然后很容易地发布和应用到任意平台中. ...

  9. maven引入外部包的方法1

    最近一个项目需要用到两个外部包文件 ctgclient-8.1.0.3.jar ctgserver-8.1.0.3.jar 方便maven打包,修改pom.xml配置(basedir为pom.xml所 ...

  10. Hybris服务器启动日志分析

    build文件检测,使用b2c_acc recipit启动服务器:/home/jerrywang/Hybris/installer/recipes/b2c_acc/build.gradle The T ...