Spring基础Profile示例

 

Profile
Profile为在不同环境使用不同的配置提供了支持(开发环境下的配置和生成环境下的配置肯定是不同的。比如数据库的位置)
1.通过设定Environment的ActiveProfiles来设定当前contest需要使用的配置环境。
在开发中使用@Profile注解类或者方法,达到不同情况下选择实例化不同的Bean
2.通过设定jvm的spring.profiles.active参数来设置配置环境
3.Web项目设置在Servlet的contest parameter中 (翻译鄙视参数)
servlet2.5中

<servlet>
    <servlet-name>dispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>spring.profiles.active</param-name>
        <param-value>production</param-value>
    </init-param>
</servlet>


servlet3.0

public class WebInit implements WebApplicationInitializer{
    @Override
    public void onStartup(ServletContest container) throws ServletException{
        container.setInitParameter("spring.profiles.default","dev");
    }
}

 

 

Profile配置
@Configuration
public class devDemoBean {

    /**
     * Profile为dev时 实例化devDemoBean
     * @return
     */
    @Bean
    @Profile("dev")
    public DemoBean devDemoBean(){
        return new DemoBean("from development profile");

    }

    /**
     * Profile为prod时 实例化prodDemoBean
     * @return
     */
    @Bean
    @Profile("prod")
    public DemoBean prodDemoBean(){
        return new DemoBean("from production profile");
    }
}
示例Bean
public class DemoBean {

    private String content;

    public DemoBean(String content){
        super();
        this.content = content;
    }

    public String getContent(){
        return content;
    }

    public void setContent(String content){
        this.content = content;
    }

}

运行

@SpringBootApplication
public class DemoApplication {

    public static void main(String[] args) {


        AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();

        // 先将活动的Profile设置为prod
        context.getEnvironment().setActiveProfiles("prod");

        //后置注册Bean配置类。不让回报未定义的错误
        context.register(devDemoBean.class);

        //刷新容器
        context.refresh();

        DemoBean demoBean = context.getBean(DemoBean.class);

        System.out.println(demoBean.getContent());

        context.close();
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值