@PropertySource 外部属性注入 @Profile指定激活环境

 一、@PropertySource 外部属性注入

在xml的配置文件中,导入外部属性的配置文件往往使用如下方式:

    

在基于注解的开发中,可以使用@PropertySource导入外部属性的配置文件,可以和@Value结合使用,给类注入值。

@Configuration
@PropertySource({"classpath:test.properties"})
@Import(Person.class)
public class Config4Properties {
}

 Person类

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Person {
    @Value("xiaohua")
    private String name;
    @Value("${person.age:20}")//默认20
    private Integer age;
    @Value("${person.flag:false}")//默认false
    private boolean flag;

}

 test.properties文件

person.age=18
person.flag=true

二、@Profile("test")指定激活环境

在开发过程中,我们往往需要在不同的环境下激活不同的配置,比如数据库,在测试环境下使用测试库,开发使用开发库,@Profile("test")注解可以指定特定环境激活的条件,加了注解的组件只有在相应的环境被激活之后才能被注册,默认是defalult环境,未加注解的组件,任何环境下都能注册

@Configuration
public class Config4Profile {

    /**
     * 在测试发环境下,给容器注入一个名字为test的student
     * @return
     */
    @Profile("test")
    @Bean("student")
    public Student student(){
        return new Student("test",1);
    }

    /**
     * 在开发发环境下,给容器注入一个名字为dev的student
     * @return
     */
    @Profile("dev")
    @Bean("student2")
    public Student student2(){
        return new Student("dev",1);
    }
}

环境激活方式一:

public class Test4ProFile {
    public static void main(String[] args) {
        //设置激活环境,方法一
        AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext();
        applicationContext.getEnvironment().setActiveProfiles("dev");
        applicationContext.register(Config4Profile.class);
       applicationContext.refresh();

        System.out.println(applicationContext.getBean(Student.class));
    }
}

环境激活方式二: 通过外部属性文件配置

spring.profiles.active=dev

环境激活方式三:运行时参数

 @PropertySource 外部属性注入 @Profile指定激活环境_第1张图片

你可能感兴趣的:(spring)