SpingBoot 属性加载
属性加载顺序
配置属性加载的顺序
- 开发者工具 `Devtools` 全局配置参数;
- 单元测试上的 `@TestPropertySource` 注解指定的参数;
- 单元测试上的 `@SpringBootTest` 注解指定的参数;
- 命令行指定的参数,如 `java -jar springboot.jar --name="demo"`;
- 命令行中的 `SPRING_APPLICATION_JSONJSON` 指定参数, 如 `java -Dspring.application.json='{"name":"demo"}' -jar springboot.jar`
- `ServletConfig` 初始化参数;
- `ServletContext` 初始化参数;
- JNDI参数(如 `java:comp/env/spring.application.json`);
- Java系统参数(`System.getProperties()`);
- 操作系统环境变量参数;
- `RandomValuePropertySource` 随机数,仅匹配:`ramdom.*`;
- JAR包外面的配置文件参数(`application-{profile}.properties(YAML)`)
- JAR包里面的配置文件参数(`application-{profile}.properties(YAML)`)
- JAR包外面的配置文件参数(`application.properties(YAML)`)
- JAR包里面的配置文件参数(`application.properties(YAML)`)
- `@Configuration`配置文件上 `@PropertySource` 注解加载的参数
- 默认参数(通过 `SpringApplication.setDefaultProperties` 指定)
数字小的优先级越高,即数字小的会覆盖数字大的参数值。
属性配置方式
- PropertyPlaceholderConfigurer:
- <context:property-placeholder location="classpath:sys.properties" />
- @Bean的方式
@Bean
public PropertyPlaceholderConfigurer propertiess() {
PropertyPlaceholderConfigurer ppc = new PropertyPlaceholderConfigurer();
Resource[] resources = new ClassPathResource[]{new ClassPathResource("sys.properties")};
ppc.setLocations(resources);
ppc.setIgnoreUnresolvablePlaceholders(true);
return ppc;
} - xml 的方式
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:sys.properties</value>
</list>
</property>
<property name="ignoreUnresolvablePlaceholders" value="true"/>
</bean>
- 通过 springboot 扩展方式:
@Bean
public CommandLineRunner commandLineRunner() {
return (args) -> {
System.setProperty("name", "demo");
};
} 通过 @PropertySource 配置
@PropertySource("classpath:sys.properties")
@Configuration
public class DemoConfig {
}- @SpringBootTest(value = { "name=javastack-test", "sex=1" })
属性获取方式
- 占位符:${PlaceHolder}
- SpEL 表达式 #{}
- 通过 Environment 获取
// 只有使用注解 @PropertySource 的时候可以用,否则会得到 null。
@Autowired
private Environment env; public String getUrl() {
return env.getProperty("demo.jdbc.url");
} - 通过 @Value 注入
@Value("${demo.jdbc.url}")
private String url; - @ConfigurationProperties
@Configuration
@ConfigurationProperties(prefix = "demo.db")
@Data
public class DataBase {
String url;
String username;
String password;
}
SpingBoot 属性加载的更多相关文章
- 静态属性加载到jvm时候就存放在数据共享区,而不是等new后出现
静态属性加载到jvm时候就存放在数据共享区,而不是等new后出现.他的生命周期是 jvm结束 才会消失,一般的方法属性是对象结束后 就会消失.
- Spring Boot的属性加载顺序
伴随着团队的不断壮大,往往不需要开发人员知道测试或者生产环境的全部配置细节,比如数据库密码,帐号信息等.而是希望由运维或者指定的人员去维护配置信息,那么如果要修改某项配置信息,就不得不去修改项 ...
- SpringBoot 教程之属性加载详解
免费Java高级资料需要自己领取,涵盖了Java.Redis.MongoDB.MySQL.Zookeeper.Spring Cloud.Dubbo高并发分布式等教程,一共30G. ...
- Entity Framework Core导航属性加载问题
前言 今天下午在开发的时候发现EF Core实体模型中的导航属性为 null,经排查既不是没有加 virtual 关键字,也不是外键关系映射错误. 解决方法 通过查询官网文档,发现,原因在于EF Co ...
- 三 MyBatis配置文件SqlMapCofing.xml(属性加载&类型别名配置&映射文件加载)
SqlMapCofing:dtd,属性加载有固定的顺序Content Model properties:加载属性文件 typeAliases:别名配置 1 定义单个别名:不区分大小写 核心配置: 映射 ...
- spring boot 使用属性加载顺序
1.命令行中传入的参数 2.SPRING_APPLICATION_JSON中的属性.SPRING_APPLICATION_JSON是以JSON格式配置再系统环境变量中的内容 3.java:comp/e ...
- Entity Framework Core 导航属性 加载数据
Loading Related Data https://docs.microsoft.com/en-us/ef/core/querying/related-data Eager loading me ...
- Springboot属性加载与覆盖优先级与SpringCloud Config Service配置
参考官方文档:https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config. ...
- 高性能Javascript--脚本的无阻塞加载策略
Javascript在浏览器中的性能,可以说是前端开发者所要面对的最重要的可用性问题. 在Yahoo的Yslow23条规则当中,其中一条是将JS放在底部 .原因是,事实上,大多数浏览器使用单进程处理U ...
随机推荐
- 别人的Linux私房菜(18)认识系统服务(daemon)
完成服务service的程序称为daemon.完成计划性的服务程序如crond是一个daemon. 早期的System V的init管理daemon操作中,系统内核首先调用init,然后init运行系 ...
- C重新入门
推荐书籍:<C专家编程>.<C和指针>.<C陷阱与缺陷> <C专家编程>参看:http://www.ituring.com.cn/article/274 ...
- web应用/路由控制/视图函数/单表多表操作
一. 1.wen应用:BS架构的应用程序,B是浏览器,S:server(实现了wsgi协议)+ application https://www.cnblogs.com/liuqingzheng/art ...
- flex弹性盒子布局
一.在需要使用弹性盒子的容器上添加属性:display:flex 或者 display:inline-flex; 二.在父容器上添加flex-direction设置子元素主轴方向: 不写默认值是X轴从 ...
- 常见的js dom操作
1.查找 document.getElementById('id属性值'); 返回拥有指定id的第一个对象的引用 document/element.getElementsByClassName( ...
- 2019.03.25 bzoj4568: [Scoi2016]幸运数字(倍增+线性基)
传送门 题意:给你一棵带点权的树,多次询问路径的最大异或和. 思路: 线性基上树?? 倍增维护一下就完了. 时间复杂度O(nlog3n)O(nlog^3n)O(nlog3n) 代码: #include ...
- leetcode - valid number 正则表达式解法
import java.util.regex.Pattern; public class Solution { Pattern p = Pattern.compile("^[\\+\\-]? ...
- spring mvc 扩展 标签解析
spring mvc 标签解析 InterceptorsBeanDefinitionParser http://www.cnblogs.com/fangjian0423/p/springMVC-int ...
- Exp8 Web基础 20154320 李超
1.实验后回答问题 (1)什么是表单. 表单是一个包含表单元素的区域,表单元素是允许用户在表单中输入信息的元素,表单在网页中主要负责数据采集功能,一个表单有三个基本组成部分:表单标签.表单域.表单按钮 ...
- cookie httpOnly 打勾
在 chrome dev tools 中,通过 Application -> Cookies 可以查看 cookie. 其中有一列表头为`HTTP`,如果其下打勾了,则表明 httpOnly. ...