Spring中环境与profile

原创 2018年04月16日 17:12:15

在软件开发的过程中,通常会经过开发环境,测试环境和生产环境;Spring中Profile的配置可以让我们不用担心这个问题.

配置profile bean

        在Java配置中,可以使用@Profile注解指定某个bean属于哪一个profile.

package main.java.Demo1;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;

/**
 * @author myvina@qq.com
 * @date 18-4-16 上午8:53
 */

@Configuration
@Profile("dev")
public class CompactDiskConfig2 {
    @Bean
    public CompactDisc beatlesCD(){
        return new BeatlesCD();
    }

    @Bean
    public CDPlayer cdPlayer(){
        return new CDPlayer(beatlesCD());
    }

    @Bean
    public CDPlayer cdPlayer(CompactDisc compactDisc){
        return new CDPlayer(compactDisc);
    }
}

        这里@Profile注解应用在了类级别上.它告诉Spring这个配置类中的bean只有在 dev profile激活时才会创建.如果 dev profile没有激活的话,那么带有@Bean注解的方法都会被忽略掉.

        在Spring3.1中,只能在类级别使用@Profile注解,不过,从Spring3.2开始,也能在方法级别上使用@Profile注解,与@Bean注解一同使用,如下所示:

package main.java.Demo1;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;

/**
 * @author myvina@qq.com
 * @date 18-4-16 上午8:53
 */

@Configuration
public class CompactDiskConfig2 {
    @Bean
    @Profile("dev")
    public CompactDisc beatlesCD(){
        return new BeatlesCD();
    }

    @Bean
    @Profile("prod")
    public CDPlayer cdPlayer(){
        return new CDPlayer(beatlesCD());
    }

    @Bean
    @Profile("dev")
    public CDPlayer cdPlayer(CompactDisc compactDisc){
        return new CDPlayer(compactDisc);
    }
}

        只有当规定的profile激活时,响应的bean才会被创建,没有制定profile的bean始终都会被创建.


在XML中配置profile:

        可以通过<beans>中的profile属性,在XML中配置profile bean.        

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

    <beans profile="dev">
        <bean id="devbeatlesCD" class="main.java.Demo1.BeatlesCD"/>
    </beans>

    <beans profile="qa">
        <bean id="qabeatlesCD" class="main.java.Demo1.BeatlesCD"/>
    </beans>
</beans>

        可以在<beans>中嵌套定义<beans>元素,不用每个环境都创造一个profile XML文件


激活profile

        Spring通过spring.profiles.active和spring.profiles.default来确定哪个profile处于激活状态.

                

根据环境装配你的bean——Spring中profile的应用

环境配置类注解的使用场景在于:有时候你的开发环境所使用的bean和测试环境以及生产环境不太一样,一般处理这类问题 可能需要人工处理,你可能会在环境迁移的时候手动去掉其他环境的注入标识,费时且容易出错。...
  • u011230736
  • u011230736
  • 2017-08-30 14:59:22
  • 222

spring-boot使用profile环境切换

spring-boot是一个大大减少配置的环境,平时我们开发应用是要把开发环境和测试环境的配置给分开,我们可以在spring-boot中去使用profile轻松完成环境的切换。 文件的命名规范appl...
  • micro_hz
  • micro_hz
  • 2017-07-05 19:22:40
  • 1862

利用spring的profile切换不同的环境

1.profile简单实用-简单暴力才是最好的  我们就简单地用一下,先不考虑和maven的集成使用,就可以解决烦人的事情。 ...
  • WeiJiaXiaoBao
  • WeiJiaXiaoBao
  • 2016-04-22 15:24:14
  • 4778

开发框架-Spring-Profile的配置、激活和读取

说明一:这里只展示通过JavaConfig方式进行配置,暂时没有XML方式的配置。 说明二:这里假设使用的上下文环境为SpringBoot。 Spring Profile的配置: 关键字:@Pro...
  • u012131888
  • u012131888
  • 2017-10-17 16:24:06
  • 185

多环境支持-Maven和Spring的Profile

多环境支持是每个项目都要面对的问题,且不说很多环境,哪怕简单的项目也是需要区分本地开发的环境和正式运行的生产环境,不同的项目架构有不同的实现方式,这篇文章先说明利用Profile来进行配置的方式。...
  • xiaosunzhu
  • xiaosunzhu
  • 2017-08-04 11:32:43
  • 1049

Spring 全注解配置 bean 和 调用 (2) @Profile 自适应不同的模式或环境中

package com.xiuye.config; import org.springframework.beans.factory.config.ConfigurableBeanFactory; ...
  • xiuye2015
  • xiuye2015
  • 2016-11-12 12:10:48
  • 649

在spring中通过Profile配置不同环境下log配置

一般我们在开发的时候,希望log打到控制台上,而在发布的时候,希望打到文件里面。在spring里面可以通过profile进行切换。 在application.yml里面,每个profile增...
  • sinat_36735108
  • sinat_36735108
  • 2016-12-07 10:58:13
  • 680

Spring boot中用Profile配置多个环境参数

一般我们在开发中,都有多套环境,比如数据库配置,有:开发、测试、发布三个环境。如果人工修改,一方面浪费人力,一方面也容易乱中出错。 Spring提供了profile的功能,可以配置多套配置,...
  • sinat_36735108
  • sinat_36735108
  • 2016-11-24 12:24:11
  • 3792

Spring——使用profile为不同环境创建bean

0.技术所要解决的问题在开发软件时候,有一个很大的挑战就是将应用从一个环境迁移到另外一个环境。开发阶段中,某些环境相关做法可能并不合适迁移到生产环境中,甚至迁移过去也无法工作。例如数据库配置,加密算法...
  • ALemon_Y
  • ALemon_Y
  • 2017-11-18 11:20:34
  • 156

spring profile来用不同的文件,配置不同的环境, deploy不同的war

1)普通配置 如果在开发时进行一些数据库测试,希望链接到一个测试的数据库,以避免对开发数据库的影响。 开发时的某些配置比如log4j日志的级别,和生产环境又有所区别。 各种此类的需求,让我希望有...
  • abcd1101
  • abcd1101
  • 2016-04-09 15:23:08
  • 439
收藏助手
不良信息举报
您举报文章:Spring中环境与profile
举报原因:
原因补充:

(最多只允许输入30个字)