Spring注解驱动开发学习总结10:根据环境注册 @Profile注解

本文详细介绍了如何在Spring应用中使用@Profile注解来根据不同环境(如dev、test、prd)注册Bean,包括配置文件设置、动态参数和代码激活环境的示例。重点展示了如何在生产环境(prd)下,bean的品质设置为生产级别。
摘要由CSDN通过智能技术生成

1、根据环境注册@Profile注解

@Profile注解可以指定组件在哪个环境下才能注入容器
比如配置文件有开发环境、测试环境、生产环境,生产发布的时候必须要使用生产环境的配置。
1.1 加了环境标识的bean,只有这个环境被激活的时候才能注入容器。默认是default环境,也就是自动允许注入。
1.2 @Profile注解如果放到配置类上,只有指定的环境生效时,整个配置类的所有配置才会生效。
1.3 没有标注环境标识的bean,任何环境下都可以加载。
1.4 开启环境标识方法
  1.4.1 使用命令行动态参数:在虚拟机参数位置加载:-Dspring.profiles.active=prd
  1.4.2 使用代码的方法激活环境

1.1 构建Product类

构建Product类:com/example/bean/Product.java
给product类添加一个属性:质量quality。

package com.example.bean;

public class Product {
    private String quality;

    public Product(String quality) {
        this.quality = quality;
    }

    public String getQuality() {
        return quality;
    }

    public void setQuality(String quality) {
        this.quality = quality;
    }

    @Override
    public String toString() {
        return "Product{" +
                "quality='" + quality + '\'' +
                '}';
    }
}

1.2 构建配置类

构建配置类:com/example/config/MainConfigOfProfile.java
1)@Profile(“dev”):开发环境,产品质量为开发水平
2)@Profile(“test”):测试环境,产品质量为测试水平
2)@Profile(“prd”):生产环境,产品质量为生产水平

package com.example.config;

import com.example.bean.Product;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;

@Configuration
public class MainConfigOfProfile {

    @Profile("dev")
    @Bean("product")
    public Product productDev() {
        return new Product("dev");
    }

    @Profile("test")
    @Bean("product")
    public Product productTest() {
        return new Product("test");
    }

    @Profile("prd")
    @Bean("product")
    public Product productPrd() {
        return new Product("prd");
    }
}

1.3 测试一(动态参数开启生产环境)

新建测试方法:testProfile

	@Test
    public void testProfile() {
        AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(MainConfigOfProfile.class);
        System.out.println("\nioc容器已创建完成\n");

        Product bean = applicationContext.getBean(Product.class);
        System.out.println(bean);
    }

右键测试方法,选择Modify Run Configuration …,调整运行的动态参数
给Environment variables添加参数:spring.profiles.active=prd

在这里插入图片描述
配置好运行参数后,运行测试方法,得到下图。
可以看到,开启生产环境后,获取的bean的属性为prd
在这里插入图片描述

1.4 测试二(代码方式开启测试环境)

测试一中是使用虚拟机运行时的参数开启的生产环境,还可以通过代码方法自动设置ioc容器的环境,以下以开启测试环境举例。

新建测试方法:

	@Test
    public void testProfile2() {
        // 构造无参ioc构造器
        AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext();
        // 代码开启测试环境
        applicationContext.getEnvironment().setActiveProfiles("test");
        // 注册主配置类
        applicationContext.register(MainConfigOfProfile.class);
        applicationContext.refresh();
        System.out.println("\nioc容器已创建完成\n");

        Product bean = applicationContext.getBean(Product.class);
        System.out.println(bean);
    }

运行测试方法,得到下图。
可以看到此时得到的bean的属性就是test了。
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值