zoukankan      html  css  js  c++  java
  • 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;
    }
    
    
  • 相关阅读:
    Codeforces
    Codeforces
    SCUT
    Codeforces
    Codeforces
    poj 2229 Sumsets(类似于n的m划分)
    poj 1742 Coins(多重背包)
    hdu 2159FATE(完全背包)
    NOIP 普及组 2014 比例简化
    2018.10.2浪在ACM 集训队第三次测试赛
  • 原文地址:https://www.cnblogs.com/cgl-dong/p/12153437.html
Copyright © 2011-2022 走看看