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;
@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