03-Spring profile实用精简版介绍
为什么说是实用精简版,没办法,工作太忙压力大啊,菜是原罪啊,所以接下来写的一些博客可能都是更偏实用性,精简点,方便自己回顾,快速上手使用即可,毕竟感觉不详细还有书不是吗。
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呢?别急,下面讲的就是这些啦😁😁。。。。
Spring怎么知道哪个profile处于激活状态?其实要做到这点,Spring需要依赖于两个属性,一个是spring.profiles.active,另一个是spring.profiles.default。当设置了spring.profiles.active属性时,那么它的值就会用来确定哪个profile是激活的,如果没有设置,那么spring.profiles.default的值就用来确定哪个profile是激活的。那问题又来了,两个我都没设置怎么办?这种情况下,也就是没有profile处于激活状态,那么只有没被定义在profile中的bean会被创建,想想哪个shoes😁😁。。。。。目前,有多种方式可设置这两个属性,如下
- [li]作为DispatcherServlet的初始化参数
- 作为web应用的上下文参数
- 作为JNDI条目
- 作为环境变量
- 作为JVM的系统属性
- 在集成测试类上使用@ActiveProfiles注解设置
这些个方法任选其一即可,比如在Web应用中,设置spring.profiles.default的web.xml如下所示:
<web-app ......> ...... <!-- 为上下文设置默认的profile --> <context-param> <param-name>spring.profiles.default</param-name> <param-value>rainyday</param-value> </context-param> ...... ...... <servlet> ...... <!-- 为Servlet设置默认的profile --> <init-param> <param-name>spring.profiles.default</param-name> <param-value>rainyday</param-value> </init-param> ...... </servlet> ...... </web-app>
或许,你有点疑问,为什么配置中使用的都是profiles而非profile,难道可以让多个profile处于激活状态?没错,就是这样,我们可以设置多个,在<param-value>中可以设置多个profile,使用逗号分隔就行,如<param-value>rainyday,sunnyday</param-value>。。。。。
好了这部分就到这了,写的不好,尽量参考书,但是想要快速上手使用应该可以了😁😁。。。。。。
- iPhone配置实用工具介绍
- SQL Delta实用案例介绍 (对应软件)
- Python:实用抓图工具开发介绍(含需求分析、设计、编码、单元测试、打包、系统测试、发布各环节)
- tar命令实用介绍
- Java 集合系列03之 ArrayList详细介绍(源码解析)和使用示例
- Android Studio引入Lambda以及介绍和简单实用
- 详细介绍8款超实用JavaScript框架
- 高通烧录软件QPST的介绍和使用方法(简洁实用篇)
- Java虚拟机深入介绍03—-—类加载器类的初始化
- 2011 wireshark 实用过滤表达式(针对ip、协议、端口、长度和内容) 实例介绍
- 03_Elasticsearch如何安装以及相关插件的介绍
- 介绍VC6.0的18个实用小技巧
- chrome视频教程-03 扩展程序介绍与安装
- HTML5 03 Canvas介绍
- [bbk2909]第5集 - Chapter 03 - 介绍RAC的体系结构
- 抠火焰,介绍几种实用的抠黑色背景火焰素材的方法
- Oracle数据库在操作系统中实用工具的介绍
- 介绍PHP中的10个实用函数
- Tesseract OCR简单实用介绍
- 介绍Java的实用工具类库java.util包