Spring Boot中使用自定义的properties

    xiaoxiao2022-06-30  63

    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

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

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

    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

    这个时候再使用@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; } }

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

    @SpringBootApplication @EnableConfigurationProperties({PrivilegeSettings.class, Privilege2Settings.class}) public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } }

    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"; } }
    转载请注明原文地址: https://ju.6miu.com/read-1125868.html

    最新回复(0)