Spring实战(四)Spring高级装配中的bean profile

  profile的原意为轮廓、剖面等,软件开发中可以译为“配置”。

  在3.1版本中,Spring引入了bean profile的功能。要使用profile,首先要将所有不同的bean定义整理到一个或多个profile中,在将应用部署到每个环境时,要确保对应的profile处于激活(active)状态。

  1、@Profile注解应用在类上

  在一个类上使用JavaConfig中的注解@Profile("xxx"),指定这个类中的bean属于某一个profile。

  它告诉Spring,这个配置类中的bean只有在xxx profile激活时才会创建;

  如果xxx profile没有被激活,那类中的@Bean注解的方法都会被忽略。

  2、@Profile注解应用在方法上

  Spring3.2开始,可以在方法级别上使用@Profile注解,与@Bean注解一起使用。

  这样做的一个好处是,可以将不同的bean(所属的profile也不同)的声明,放在同一个配置类(@Configuration)中。

  只有当指定的profile被激活时,相应的bean才会被创建。

  而没有指定profile的bean,始终都会被创建。

  @Configuration

  public class AConfigClass{

    @Bean

    @Profile("A")

    methodA(){...};

    @Bean

    @Profile("B")

    methodB(){...};
  }

  3、XML中配置多个profile

  以下<beans>元素嵌套在root <beans>中,这样也可以在一个XML文件中配置多个profile。

<beans profile="dev">
    ...
    ...
</beans> 

  4、如何激活某个profile?

  Spring在确定某个profile是否被激活时,依赖两个独立的属性:

  A---spring.profiles.active

  B---spring.profiles.default

  如果设置了A属性,它的值会优先被Spring用来确定哪个profile是激活的;

  如果没有,Spring会查找B的值;

  若A、B均没有设置,则没有激活的profile,Spring则只会创建没有定义在profile中的bean。

  5、怎样设置上述A、B属性的值呢?

  作者最喜欢的一种方式是使用DispatcherServlet的参数将spring.profiles.default设置为开发环境的profile,这样所有的开发人员都可以从版本控制软件中获得应用程序源码。

  web.xml(web应用程序中)

<context-param>
    <param-name>spring.profiles.default</param-name>
    <param-value>dev</param-value>
</context-param>

  6、测试时,激活相关的profile,Spring提供了@ActiveProfiles("dev")注解。

原文地址:https://www.cnblogs.com/bigbigbigo/p/8367958.html

时间: 2024-10-09 10:27:42

Spring实战(四)Spring高级装配中的bean profile的相关文章

Spring实战笔记2---Bean的装配

创建应用对象之间协作关系的行为通常成为装配,该篇的主要内容有两个,一个Spring装配Bean的几种方式以及Spring表达式,其实这两者是分不开的,在Spring中,对象无需自己负责查找或者创建与其关联的其他对象,相反容器负责把需要相互协作的对象一引用赋予各个对象,目前我们先说声明式的装配,注解式的装配等溜到下篇再详细记录,在声明用的xml配置文件中,可以使用表达式来完成一些简单的逻辑处理,和方法调用或者对象引用,在有些特殊的需求当中非它莫属,首先是装配Bean 声明Bean <bean id

(二)《Spring实战》——Spring核心

第二章:装配Bean 在Spring中,对象无需自己查找或创建与其所关联的其他对象.相反,容器负责把需要相互协作的对象引用赋予各个对象.例如,一个订单管理组件需要信用卡认证组件,但它不需要自己创建信用卡认证组件.订单管理组件只需要表明自己两手空空,容器就会主动赋予它一个信用卡认证组件. 创建应用对象之间协作关系的行为通常称为装配(wiring),这也是依赖注入(DI)的本质. 1. Spring配置的可选方案 Spring容器负责创建应用程序中的bean并通过DI来协调这些对象之间的关系.但是,

spring实战第二章小记-装配bean

时间:2020/02/06 一.思想 1.创建应用对象之间协作关系的行为通常称为装配,这也是依赖注入(DI)的本质. 对于上面这句话的个人理解:当我们在new一个对象时如果传入了别的对象作为参数(这个对象可能是引用数据类型也可能是基本数据类型),这时两个对象之间就形成了一种依赖关系,由于这种依赖关系的存在,两个对象之间就是一种强耦合的关系,而通过依赖注入可以降低两个对象之间的耦合度,注意,不是消除,如果两个对象之间没有耦合关系,那两个对象就是完全没有关系的. 2.spring框架提供了三种主要的

spring实战之使用注解装配

使用注解装配: 从spring2.5开始,Spring启用了使用注解自动装配Bean的属性,使用注解方式自动装配与在XML中使用 autowire 属性自动装配并没有太大区别,但是使用注解方式允许更细粒度的自动装配. Spring容器默认禁用注解装配.所以,在使用基于注解的自动装配前,需要在Spring配置中启用它,最简单的启用方式是使用spring的context命名空间配置中的 <context:annotation-config>元素,如下所示: <?xml version=&qu

Spring实战之通过XML装配bean

尽管Spring长期以来确实与XML有着关联,但现在需要明确的是,XML不再是配置Spring的唯一可选方案.Spring现在有了强大的自动化配置和基于Java的配置,XML不应该再是你的第一选择了.不过,鉴于已经存在那么多基于XML的Spring配置,所以理解如何在Spring中使用XML还是很重要的.但是,我希望本节的内容只是用来帮助你维护已有的XML配置,在完成新的Spring工作时,希望你会使用自动化配置和JavaConfig. 1.1创建XML配置规范 在使用XML为Spring装配b

(一)《Spring实战》——Spring核心

<Spring实战>(第4版) 第一章:Spring之旅 1. 简化Java开发 为了降低Java开发的复杂性,Spring采取了以下4种关键策略: 基于POJO的轻量级和最小侵入性编程: 通过依赖注入和面向接口实现松耦合: 基于切面和惯例进行声明式编程: 通过切面和模板减少样板式代码. 1.1 激发POJO的潜能 在基于Spring构建的应用中,它的类通常没有任何痕迹表明你使用了Spring.最坏的场景是,一个类或许会使用Spring注解,但它依旧是POJO. Spring赋予POJO魔力的

Spring实战-Spring in Action, 4th Edition-2015年第4版本

In Action系列中最畅销的Spring图书,近十万读者学习Spring的共同选择!In Action系列中最畅销的Spring图书,有近10万读者选择本书来学习Spring! Spring框架已经成为Java开发人员的必备知识,而且Spring 3引入了强大的新特性,例如SpEL.Spring表达式语言.IoC容器的新注解以及用户急需的对REST的支持.无论你是刚刚接触Spring还是被Spring 3.0的新特性所吸引,本书都是掌握Spring的最佳选择. 下载地址: Spring in

Spring笔记——5.深入理解容器中的Bean

Spring框架的绝大部分工作是对bean的管理,包括管理bean的生命周期.使用bean继承功能. 抽象bean与子bean 为了防止太多十分类似的bean出现在xml中,我们使用抽象bean把共同的信息提取出来,使用abstract属性标记为true.它不能被实例化,意义只是被继承,是个模板.子bean可以继承抽象bean的实现类,构造器参数,属性配置信息.子bean可增加新的信息也可覆盖父bean.子bean通过parent属性指定父bean的名字.与java继承相比,bean继承的bea

【Spring实战】—— 8 自动装配

本篇介绍一下自动装配的知识,Spring为了简化配置文件的编写.采用自动装配方式,自动的装载需要的bean. 自动装配 有以下几种方式: 1 byName 通过id的名字与属性的名字进行判断,要保证Bean实例中属性名字与该装配的id名字相同. 2 byType 通过类型确定装配的bean,但是当存在多个类型符合的bean时,会报错. 3 contructor 在构造注入时,使用该装配方式,效果如同byType. 4 autodetect 自动装配,这个测试了,3.0.5版本不可用了,不知道是不