zoukankan      html  css  js  c++  java
  • SpringBoot读取application.properties文件

    http://blog.csdn.net/cloume/article/details/52538626

    Spring Boot中使用自定义的properties

    Spring Boot的application.properties中已经提供了很多默认的配置,如果要添加自定义的配置该怎么办呢?我们可以继续在application.properties中添加自定义的配置项,也可以使用新的配置文件,在里面添加自定义的配置项。比如说最近我在做一个简单的系统权限配置,我就把 
    系统的角色和角色可操作的权限列表写在application.properties中以方便进行更新。那么怎么获取自定义的配置项内容呢?

    1. 在application.properties中添加配置项

    比如说我在application.properties中添加了如下配置项:

    # user privilege
    privilege.assistor=assitor
    privilege.admin=assistor_create,star_operate,requirement_dispatch,fee_return,fee_charge,expiration_set
    privilege.superman=admin_create
    • 1
    • 2
    • 3
    • 4
    • 1
    • 2
    • 3
    • 4

    依然可以通过@Value注解方便地获取到配置项的值:

    @Value("${privilege.assistor}") private String assistorPrivileges;
    • 1
    • 1

    2. 使用新的配置文件

    为了和其他默认配置项保持独立,我也可以新建一个privilege.properties的配置文件,然后将权限相关的配置内容放到这个文件里面:

    privilege.properties
    
    # user privilege
    privilege.assistor=assitor
    privilege.admin=assistor_create,star_operate,requirement_dispatch,fee_return,fee_charge,expiration_set
    privilege.superman=admin_create
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    这个时候再使用@Value注解就拿不到配置项的值了。怎么办呢?我们可以新增相应的配置项类,在需要使用到配置项的地方直接注入使用。

    1. 定义配置类

    package com.cloume.hsep.security;
    
    import java.util.ArrayList;
    import org.springframework.boot.context.properties.ConfigurationProperties;
    import org.springframework.security.core.authority.SimpleGrantedAuthority;
    
    //privilege.properties是放在resource/config目录下的
    @ConfigurationProperties(prefix = "privilege", locations = "classpath:application.properties")
    public class PrivilegeSettings {
    
        private String superman;    
        private String assistor;    
        private String admin;
    
        private static ArrayList<SimpleGrantedAuthority> superPrivileges = new ArrayList<SimpleGrantedAuthority>();
        private static ArrayList<SimpleGrantedAuthority> adminPrivileges = new ArrayList<SimpleGrantedAuthority>();
        private static ArrayList<SimpleGrantedAuthority> assistorPrivileges = new ArrayList<SimpleGrantedAuthority>();
    
        public String getSuperman() {
            return superman;
        }
    
        public void setSuperman(String superman) {
            this.superman = superman;
            for(String privilege : superman.split(",")){
                SimpleGrantedAuthority authority = new SimpleGrantedAuthority(privilege);
                superPrivileges.add(authority);
            }
        }
    
        public String getAssistor() {
            return assistor;
        }
    
        public void setAssistor(String assistor) {
            this.assistor = assistor;
            for(String privilege : assistor.split(",")){
                SimpleGrantedAuthority authority = new SimpleGrantedAuthority(privilege);
                assistorPrivileges.add(authority);
            }
        }
    
        public String getAdmin() {
            return admin;
        }
    
        public void setAdmin(String admin) {
            this.admin = admin;
            for(String privilege : admin.split(",")){
                SimpleGrantedAuthority authority = new SimpleGrantedAuthority(privilege);
                adminPrivileges.add(authority);
            }
        }
    
        public ArrayList<SimpleGrantedAuthority> getSuperPrivileges() {
            return superPrivileges;
        }
    
        public ArrayList<SimpleGrantedAuthority> getAdminPrivileges() {
            return adminPrivileges;
        }
    
        public ArrayList<SimpleGrantedAuthority> getAssistorPrivileges() {
            return assistorPrivileges;
        }
    
       }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68

    2. 在Spring Boot入口类增加配置项注解@EnableConfigurationProperties

       @SpringBootApplication
       @EnableConfigurationProperties({PrivilegeSettings.class, Privilege2Settings.class})
       public class DemoApplication {
    
           public static void main(String[] args) {
    
               SpringApplication.run(DemoApplication.class, args);
           }
       }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    3. 使用自定义properties类

       @RestController
       public class TestController {
    
           @Autowired
           private PrivilegeSettings privilegeSettings;
    
           @RequestMapping(value = "/test", method = RequestMethod.GET)
           public @ResponseBody String test(){
               System.out.println(privilegeSettings.getSuperman());
               System.out.println(privilegeSettings.getAdmin());
               System.out.println(privilegeSettings.getAssistor());
    
               return "OK";
           } 
       }
     
     
    SpringBoot读取application.properties文件,通常有3种方式

    1. @Value  例如: 

    @Value("${spring.profiles.active}")

    private String profileActive;------相当于把properties文件中的spring.profiles.active注入到变量profileActive中

    2. @ConfigurationProperties  例如:

    @Component
    @ConfigurationProperties(locations = "classpath:application.properties",prefix="test")
    public class TestProperties {
    String url;
    String key;

    }

    其他类中使用时,就可以直接注入该TestProperties 进行访问相关的值

    3. 使用Enviroment   例如:

    private Enviroment env;

    env.getProperty("test.url");

    而env方式效率较低

    注:@ConfigurationProperties也可用于其他.properties文件,只要locations指定即可

  • 相关阅读:
    页面性能优化之内容加载优化(转)
    (Windbg调试六)c++句柄泄漏问题定位
    (Windbg调试五)C++内存越界导致的std::map异常
    (Windbg调试四)C++死锁问题定位与分析
    (Windbg调试三)C++ delete指针后依然可以访问的问题
    (Windbg调试二)Windows下c++程序崩溃问题定位
    (Windbg调试一)minidump崩溃捕捉
    WinDbg调试:配置和查看符号
    为WinDbg设置符号文件路径
    Windbg符号与源码 《第二篇》
  • 原文地址:https://www.cnblogs.com/bigben0123/p/7462199.html
Copyright © 2011-2022 走看看