Spring之Environment

Posted cgl_dong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring之Environment相关的知识,希望对你有一定的参考价值。

Spring之Environment

Spring在运行时的环境有多个选择,开发环境、测试环境、生产环境等。每个Environment中可以配置多个Property,这些Property可以自定义配置,配置信息可以注入Spring容器。

这种配置可以在xml中,也可以在javaConfig中。

我们用java配置类来测试。

使用Environment的Property向容器中的Bean的属性注入值。

如将load.properties文件中的User.name注入容器。

load.properties
User.name=Mike

准备一个配置类,使用@PropertySource注解将属性文件加载进配置中

此时在容器中已经可以使用属性。

@Configuration
@PropertySource("load.properties")
public class AppConfig {

}

使用@Value("${User.name}")注解就可以拿到属性值

@Value注解通过Spel的$符号拿到数据。

@Component
public class User {

    @Value("${User.name}")
    private String name;
    ......
}

此时通过容器获取环境,就可以拿到属性

@Test
public void test6(){
       
        ApplicationContext context = new AnnotationConfigApplicationContext(com.config.AppConfig.class);
        
        //此时user的name就是环境中的User.name
        User user = context.getBean("user",User.class);
        System.out.println("bean:"+ user);
        
        //获取环境
        Environment environment = context.getEnvironment();
        //通过属性名获取值
        String property = environment.getProperty("User.name");
        System.out.println(" 属性:"+property);
    
}

Environment 接口

接口中含有对属性的获取和存入方法。

public interface Environment extends PropertyResolver {
    String[] getActiveProfiles();

    String[] getDefaultProfiles();

    /** @deprecated */
    @Deprecated
    boolean acceptsProfiles(String... var1);

    boolean acceptsProfiles(Profiles var1);
}

Environment 继承了PropertyResolver接口

该接口中提供了对单个属性的操作。

public interface PropertyResolver {
    boolean containsProperty(String var1);

    @Nullable
    String getProperty(String var1);

    String getProperty(String var1, String var2);

    @Nullable
    <T> T getProperty(String var1, Class<T> var2);

    <T> T getProperty(String var1, Class<T> var2, T var3);

    String getRequiredProperty(String var1) throws IllegalStateException;

    <T> T getRequiredProperty(String var1, Class<T> var2) throws IllegalStateException;

    String resolvePlaceholders(String var1);

    String resolveRequiredPlaceholders(String var1) throws IllegalArgumentException;
}

以上是关于Spring之Environment的主要内容,如果未能解决你的问题,请参考以下文章

spring之Environment

(005)Spring Boot之读取配置文件

Spring Environment的作用

C#程序员经常用到的10个实用代码片段

Javac之Environment

spring boot 之 spring.profiles