001-属性文件

一 .概述

  本节主要讲述的就是获取属性文件中的内容.


 二 . 使用环境变量获取属性的值

  在springboot之中,所有被扫描到的属性文件都会存放在环境变量之中,同时这个环境环境变量还会放置一些其它的属性.因此,我们可以从环境变量之中获取属性文件的值.  

jdbc.username=root

我们在application.properties文件之中配置上述的内容.  

@SpringBootTest(classes=SpringbootRunnerClass.class)
@RunWith(SpringRunner.class)
public class PropertiesTest {
    
    @Resource
    private Environment env;
    
    @Test
    public void test() {
        System.out.println(env.getProperty("jdbc.username"));
    }
}

通过这种方式,我们可以定义默认值和类型转换,看下面的例子:  

jdbc.port=9999

我们添加上述的内容,并进行下面的测试:  

    @Test
    public void test1() {
        System.out.println(env.getProperty("jdbc.port",Integer.class));
    }
    @Test
    public void test2() {
        System.out.println(env.getProperty("jdbc.password","trek"));
    }

在第二个测试之中,我们并没有配置jdbc.password,而是使用了一个默认值进行配置.


三 .使用@Value注解完成属性值的获取  

    @Value("${jdbc.username}")
    private String username;
    
    @Test
    public void test3() {
        System.out.println(username);
    }

使用这种方式,我们依然可以实现类型转换. 

    @Value("${jdbc.port}")
    private Integer port;
        
    @Test
    public void test4() {
        System.out.println(port);
    }

但是使用这种方式,我们如果想像上面那样提供一个默认值是不行的.


 四.属性文件占位符  

prefix=trek
name=${prefix}name

在上面的配置之中,我们使用了占位符的概念.

  那么,占位符是否能在spring环境下生效呢?

    
    @Value("${name}")
    private String name;
    @Test
    public void test5() {
        System.out.println(name);
    }
    

我们发现,我们可以在属性文件之中使用${}的表达式完成占位符的操作.


 五 .引起其他的属性文件

  在springboot之中,为我们提供了@PropertySource完成.

我们首先在资源目录之中建立一个pro的属性文件.

  具体的内容如下: 

user.age=123
user.password=234

看我们的测试代码:  

@Configuration
@PropertySource(value="classpath:pro.properties")
public class ProConfig {

}

我们首先创建一个配置了,将我们另外的配置文件引入到环境变量之中. 

@SpringBootTest(classes = SpringbootRunnerClass.class)
@RunWith(SpringRunner.class)
public class PropertiesTest2 {

    @Value("${user.age}")
    private String age;
    @Value("${user.password}")
    private String password;
    
    @Test
    public void test() {
        System.out.println(age);
        System.out.println(password);
    }

}

我们发现,现在我们可以使用外部的属性文件了.


 六 .对象属性映射

  我们常常的一个做法就是将属性文件内容映射到一个Bean之中.在springboot之中,我们可以使用@ConfigurationProperties完成.

@Configuration
@ConfigurationProperties(prefix="user")
public class User {
    
    private Integer age;
    
    private String password;
    
    private String language = "chinese";

在这个配置类之中,我们首先@ConfigurationProperties注解,将前缀为"user"的属性映射到该配置类之中,在这里我们演示了三种情况.

  [1]类型转换

  [2]默认值

  [3]一般情况

    @Resource
    private User user;
    
    @Test
    public void test2() {
        System.out.println(user);
    }
原文地址:https://www.cnblogs.com/trekxu/p/9738132.html