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"; } }
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指定即可
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
2016-09-01 wildfly jboss 优化配置
2015-09-01 Jboss7.1 加入realm auth认证 bootsfaces 美化的登录页面