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指定即可
SpringBoot读取application.properties文件的更多相关文章
- SpringBoot读取application.properties文件内容
application.properties存储数据的方式是key-value. application.properties内容 userManager.userFile=data/user.pro ...
- SpringBoot读取application.properties中文乱码
[本文版权归微信公众号"代码艺术"(ID:onblog)所有,若是转载请务必保留本段原创声明,违者必究.若是文章有不足之处,欢迎关注微信公众号私信与我进行交流!] 解决方案 在ID ...
- springboot读取application.properties中自定义配置
假设在application-xxx.properties中配置 user.name=yuhk 一.在Controller中读取 @Value("{$user.name}") pr ...
- SpringBoot在logback.xml中读取application.properties中配置的日志路径
1.在springboot项目中使用logback记录日志,在logback.xml中配置日志存储位置时读取application.properties中配置的路径,在 logback.xml中配置引 ...
- springboot:读取application.yml文件
现在开发主要使用微服务框架springboot,在springboot中经常遇到读取application.yml文件的情形. 一.概述 开发过程中经常遇到要读取application.yml文件中的 ...
- Eclipse下SpringBoot没有自动加载application.properties文件
Eclipse内创建SpringBoot项目,在java/main/resources文件夹下面创建application.properties配置文件,SpringApplication.run后发 ...
- Spring系列之——springboot解析resources.application.properties文件
摘要:本文通过讲解如何解析application.properties属性,介绍了几个注解的运用@Value @ConfigurationProperties @EnableConfiguration ...
- SpringBoot配置文件 application.properties详解
SpringBoot配置文件 application.properties详解 本文转载:https://www.cnblogs.com/louby/p/8565027.html 阅读过程中若发现 ...
- springboot 配置 application.properties相关
springboot 有读取外部配置文件的方法,如下优先级: 第一种是在jar包的同一目录下建一个config文件夹,然后把配置文件放到这个文件夹下.第二种是直接把配置文件放到jar包的同级目录.第三 ...
随机推荐
- Java 里如何实现线程间通信(转载)
出处:http://www.importnew.com/26850.html 正常情况下,每个子线程完成各自的任务就可以结束了.不过有的时候,我们希望多个线程协同工作来完成某个任务,这时就涉及到了线程 ...
- CRM/PLM/SCM/MES与ERP的联系与区别
企业通过专设信息机构.信息主管,配备适应现代企业管理运营要求的自动化.智能化.高技术硬件.软件.设备.设施,建立包括网络.数据库和各类信息管理系统在内的工作平台,提高企业经营管理效率的发展模式. 那么 ...
- 剑指offer(14)
题目: 操作给定的二叉树,将其变换为源二叉树的镜像. 思路: 这里有个细节,我们发现,6节点的子节点在操作之后并没有发生变化,所以等会我们在交换的时候,交换的不是节点的数值,而是整个节点. 另外我们进 ...
- java 中Excel的导入导出
部分转发原作者https://www.cnblogs.com/qdhxhz/p/8137282.html雨点的名字 的内容 java代码中的导入导出 首先在d盘创建一个xlsx文件,然后再进行一系列 ...
- Linq:使用Take和Skip实现分页
Skip,Take: list = list.Skip(pageNum * pageSize).Take(pageSize).ToList(); pageSize :表示一页多少条. pageNum: ...
- Uninstall registry
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
- javap指令
栈和局部变量操作将常量压入栈的指令aconst_null 将null对象引用压入栈iconst_m1 将int类型常量-1压入栈iconst_0 将int类型常量0压入栈iconst_1 将int类型 ...
- poj-2823(单调队列)
题意:给你长度位n的数组,问每个长度为m的段的最值: 解题思路:这道题是单调队列的入门题: #include<iostream> #include<algorithm> #in ...
- Java常用调试技巧(转)
调试不仅可以查找到应用程序缺陷所在,还可以解决缺陷.对于Java程序员来说,他们不仅要学会如何在Eclipse里面开发像样的程序,更需要学会如何调试程序.本文介绍了Java程序员必知的10个调试技巧, ...
- Qt QLineEdit
//lineEdit显示文字 QLineEdit *lineEdit = new QLineEdit(widget); lineEdit->setObjectName(QString()); l ...