• 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);
        }
  • 相关阅读:
    bcdedit无法打开启动配置数据存储拒绝访问
    linux 实现两个文件指定列的替换
    Err:12 http://security.ubuntu.com/ubuntu focalupdates/main amd64 openjdk11jreheadless amd64 11.0.11+90ubuntu2~20.04 404 Not Found [IP: 91.189.88.152 80]
    SQL的经典语句(太全了)
    反射
    多线程互操作
    C# 2.0 套接字编程实例初探
    sqlserver 导出 insert (转)
    同步方法和异步方法的区别 (转)
    数组转成 位数组 这个很好用。
  • 原文地址:https://www.cnblogs.com/trekxu/p/9738132.html
Copyright © 2020-2023  润新知