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

  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呢?别急,下面讲的就是这些啦

03-Spring profile实用精简版介绍的更多相关文章

  1. [原创]spring及springmvc精简版--AOP

    接上一篇:[原创]spring及springmvc精简版--IOC 理解AOP.java是一种面向对象的语言.而AOP是面向切面,在我看来是面向逻辑或者业务编程,它是对一组逻辑的抽象和分配. 经典例子 ...

  2. [原创]spring及springmvc精简版--IOC

    本篇博客为自己学习spring和springmvc的一个总结.主要以代码为主,至于文字性描述理解性东西,可以自行百度.有认识不妥的地方,还望指出,相互学习. 以前很困惑spring中的一些概念,在学习 ...

  3. [原创]spring及springmvc精简版--继承数据源,声明式事物

    1.前期:导入c3p0 jar包,相关数据库连接jar包,我用的是mysql 2.关注事物管理器的配置和AOP配置 代码: 核心关注bean配置文件 application.xml <?xml ...

  4. Mac系统Snail SVN 精简版配置比较、合并工具:Beyond Compare及破解

    Mac系统 Beyond Compare及破解 前言 在上一篇文章:Mac系统的SVN客户端:Snail SVN 精简版 介绍了在mac系统中svn客户端使用的是snail svn,但是当我想要把本地 ...

  5. TeamViewer12.0.71503(远程控制软件)精简版 单文件企业版介绍

    TeamViewer 是一款能在任何防火墙和 NAT 代理的后台用于远程控制,桌面共享和文件传输的简单且快速的解决方案.为了连接到另一台计算机,只需要在两台计算机上同时运行 TeamViewer 即可 ...

  6. TeamViewer12.0.71503(远程控制软件)精简版单文件企业版介绍

    TeamViewer 是一款能在任何防火墙和 NAT 代理的后台用于远程控制,桌面共享和文件传输的简单且快速的解决方案.为了连接到另一台计算机,只需要在两台计算机上同时运行 TeamViewer 即可 ...

  7. Spring实战第4版PDF下载含源码

    下载链接 扫描右侧公告中二维码,回复[spring实战]即可获取所有链接. 读者评价 看了一半后在做评论,物流速度挺快,正版行货,只是运输过程有点印记,但是想必大家和你关注内容,spring 4必之3 ...

  8. Maven 整合 spring profile实现多环境自动切换

    Maven 整合 spring profile实现多环境自动切换 时间:2014-03-19 15:32来源:Internet 作者:Internet 点击:525次 profile主要用在项目多环境 ...

  9. 电脑公司最新GHOST WIN7系统32,64位优化精简版下载

    系统来自系统妈:http://www.xitongma.com 电脑公司最新GHOST win7系统32位优化精简版V2016年3月 系统概述 电脑公司ghost win7 x86(32位)万能装机版 ...

随机推荐

  1. Word 公式排版(使用制表符)

    公式的构成: 公式: 右编号: 法一:使用 3 行 1 列的表格 Word论文写作如何实现公式居中.编号右对齐_百度经验 修改三个单元格之间的长度比例关系时,其位置是在: [表格属性]⇒ [单元格]选 ...

  2. C/C++回调方式系列之一 函数指针和函数回调模式

    一.函数指针 1. 函数的定义 return_type function_name(parameter list) { function_body } return_type: 返回值,函数一定有返回 ...

  3. x:Static , StaticResource 和DynamicResource等XAML 扩展用法

    原文:x:Static , StaticResource 和DynamicResource等XAML 扩展用法 前提: <system:String x:Key="{Component ...

  4. Bootstrap 固定在顶部导航条

    @{    Layout = null;}<!DOCTYPE html><html><head>    <meta name="viewport&q ...

  5. WPF的点击穿透

    1.background 为{x:null} 或  鼠标点击会穿透,如果不想让一个透明的border点击穿透,设置透明色Transparent时就可以点到这个看起来透明的border 2.当依赖属性I ...

  6. Win8 Metro(C#)数字图像处理--2.49Zhang二值图像细化算法

    原文:Win8 Metro(C#)数字图像处理--2.49Zhang二值图像细化算法  [函数名称]   二值图像细化算法      WriteableBitmap ThinningProcess ...

  7. SQLServer 可更新订阅数据冲突的一个原因

    原文:SQLServer 可更新订阅数据冲突的一个原因 可更新订阅为什么有冲突? 可更新订阅中,当升级增加一个字段时,通常在发布服务器的发布数据库中增加,对表增加字段后,发布自动同步到订阅数据库中(复 ...

  8. SqlServer 使用脚本创建分发服务及事务复制的可更新订阅

    原文:SqlServer 使用脚本创建分发服务及事务复制的可更新订阅 [创建使用本地分发服务器] /************************[使用本地分发服务器配置发布]*********** ...

  9. 三种方式配置Mac OS X的启动项

    在Mac OS X中,有三种方式来实现启动项的配置:1)Login Items:2)StartupItems:3)launchd daemon. 1.Login Items 打开System Pref ...

  10. Interactive Data Display如何显示菜单?

    貌似直接跟其它控件一样添加菜单就行了. 不过这个版本已经取消了默认菜单,所有的菜单功能都得自己去实现.