为什么说是实用精简版,没办法,工作太忙压力大啊,菜是原罪啊,所以接下来写的一些博客可能都是更偏实用性,精简点,方便自己回顾,快速上手使用即可,毕竟感觉不详细还有书不是吗。

  profile是用来干什么的?简单来说,就是现实需求中,不同环境下我们所要的某个bean可能会有所不同。

  1. 配置profile bean

    可以使用@Profile注解指定某个bean属于哪个profile。比如下雨天时我需要的工具是雨伞,所以可以如下配置:

@Configuration
@Profile("rainyday")
public class RainyDayConfig {
@Bean
public Tool tool() {
return new Umbrella(); //假设Umbrella继承了Tool
}
}

  这里@Profile注解用在了类级别上,表明只有rainyday profile激活时,这个配置类中的bean才会被创建,相反,当rainyday profile没有被激活时,带有@Bean注解的方法会被忽略。同理,现在晴天时,我可能需要阳伞,可如下配置:

@Configuration
@Profile("sunnyday")
public class SunnyDayConfig {
@Bean
public Tool tool() {
return new Sunshade(); //假设Sunshade继承了Tool
}
}

    与下雨天(rainyday)一样,上面这段配置类中使用@Bean注解的方法也只有在sunnyday profile激活时,才可以生效。

  不过这个还是有点麻烦,需要两个配置类,这是Spring 3.1中的唯一写法,但是Spring 3.2之后,就可以这样写了,如下:

@Configuration
public class ToolConfig {
@Bean
@Profile("rainyday")
public Tool umbrellaTool() {
return new Umbrella(); //假设Umbrella继承了Tool
} @Bean
@Profile("sunnyday")
public Tool sunshadeTool() {
return new Sunshade(); //假设Sunshade继承了Tool
} @Bean
public Shoes shoes() {
return new Shoes();
}
}

  这样是不是就方便多了,我只需要一个配置类,需要注意的是,umbrellaTool方法只会在下雨天(rainyday)profile激活时生效并创建bean,sunshadeTool方法只会在晴天(sunnyday)profile激活时生效并创建bean,而shoes方法没有指定profile,它会始终生效并创建bean。

  上面这些都是使用JavaConfig类方式在声明profile,其实也可在XML中配置profile bean,只需在<beans>标签中添加profile属性即可,这里不详细介绍了,可参考书。

2. 激活profile

  profile是配置好了,但是怎么激活profile呢?别急,下面讲的就是这些啦

最新文章

  1. JavaScript易错知识点整理
  2. bug_ _org.json.JSONException: End of input at character 0 of
  3. CentOS7 (64位) 下QT5.5 连接MySQL数据库(driver not loaded)
  4. 【帖子】怎么彻底删除kafka的topic,然后重建?
  5. Android中ViewPager+Fragment取消(禁止)预加载延迟加载(懒加载)问题解决方案
  6. ecshop数据库操作类
  7. 高级I/O函数(2)-splice函数
  8. LB 负载均衡的层次结构(转)
  9. iOS Swift开发的一些坑
  10. Quartz.Net学习笔记
  11. js-day05-JSON-jQuery初体验
  12. 解决STM32 I2C接口死锁在BUSY状态的方法讨论
  13. python 截取 取出一部分的字符串
  14. Centos6.6下编译安装Apache2.2.31
  15. Java实现数据库操作
  16. c#学习路线及目录导航
  17. 第168天:json对象和字符串的相互转换
  18. bzoj 2395 [Balkan 2011]Timeismoney——最小乘积生成树
  19. js方法的使用(z)
  20. Using the @synchronized Directive

热门文章

  1. java_Mac安装多个JDK版本并设置环境变量
  2. Java 知识笔记 - 类、集合、多线程、IO、JVM(最后一次更新,2019年02月17日)
  3. 为何只能在其关联的线程内启动timer?(Qt会检查一致性,否则就不执行)
  4. 比快更快——微软LightGBM
  5. Linux日志系统
  6. BuildWinRTL.dproj 用这个重新编译就行
  7. 迁移到MSYS2 与 Qt 工具链注意的几个事情(g++在链接时,符号依赖项查找遵循从左至右的顺序,但qmake会自动合并造成错误。使用脚本给Mingw32-make创造出一个局部的VC编译环境)
  8. DHTMLEdit控件的安装
  9. 设置tablewidget自适应列宽和设置自动等宽
  10. [java代码库]-简易计算器(第一种)