@ConfigurationProperties(prefix = "config2",locations="classpath:test.properties")
1.配置文件解析
Spring Boot使用“习惯优于配置”(项目中存在大量的配置,此外还内置了一个习惯性的配置,让你无需手动进行配置)的理念让你的项目快速运行起来。所以,我们要想把Spring Boot玩的溜,就要懂得如何开启各个功能模块的默认配置,这就需要了解Spring Boot的配置文件application.properties。
Spring Boot使用了一个全局的配置文件application.properties,放在src/main/resources目录下或者类路径的/config下。Sping Boot的全局配置文件的作用是对一些默认配置的配置值进行修改。
不存在 创建一个,application.properties提供自定义属性的支持,这样我们就可以把一些常量配置在这里:
test.baidu.url=http://www.baidu.com test.baidu.title=中国富强 test.baidu.s8how=nihao test.url=${test.baidu.show} , ${test.baidu.title},欢迎! #模板编码 spring.thymeleaf.encoding=UTF-8
然后直接在要使用的地方通过注解@Value(value=”${config.name}”)就可以绑定到你想要的属性上面
@Value(value = "${test.url}") private String gourl; @Value(value = "${test.baidu.title}") private String gotitle;
有时候属性太多了,一个个绑定到属性字段上太累,官方提倡绑定一个对象的bean,这里我们建一个Config.java类,顶部需要使用注解@ConfigurationProperties(prefix = “test.baidu”)来指明使用哪个
import org.springframework.boot.context.properties.ConfigurationProperties; /** * @author huxy * @备注 配置文件映射类 * @version V1.0 * @节点 */ @ConfigurationProperties(prefix="test.baidu") public class Config { private String url; private String title; private String show; public String getUrl(){ return url; } public void setUrl(String url){ this.url=url; } public String getTitle(){ return title; } public void setTitle(String title){ this.title=title; } public String getShow(){ return show; } public void setShow(String show){ this.show=show; } }
这里配置完还需要在spring Boot入口类加上@EnableConfigurationProperties并指明要加载哪个bean,如果不写Config.class,在bean类那边添加
@SpringBootApplication @EnableConfigurationProperties(Config.class) public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } }
最后在Controller中引入Config使用即可,如下:
@Autowired private Config config;
使用:config.getShow() 即可
在application.properties中的各个参数之间也可以直接引用来使用:
test.baidu.url=http://www.baidu.com test.baidu.title=中国富强 test.baidu.s8how=nihao test.url=${test.baidu.show} , ${test.baidu.title},欢迎!
使用自定义配置文件
有时候我们不希望把所有配置都放在application.properties里面,这时候我们可以另外定义一个,这里我明取名为test.properties,路径跟也放在src/main/resources下面。
@Configuration @ConfigurationProperties(prefix = "com.md") @PropertySource("classpath:test.properties") public class ConfigTestBean { private String name; private String want; // 省略getter和setter }
如果你使用的是1.5以前的版本,那么可以通过locations指定properties文件的位置,这样:
@ConfigurationProperties(prefix = "config2",locations="classpath:test.properties")
但是1.5版本后就没有这个属性了,找了半天发现添加@Configuration和@PropertySource(“classpath:test.properties”)后才可以读取。
随机值配置
配置文件中${random} 可以用来生成各种不同类型的随机值,从而简化了代码生成的麻烦,例如 生成 int 值、long 值或者 string 字符串。
dudu.secret=${random.value} dudu.number=${random.int} dudu.bignumber=${random.long} dudu.uuid=${random.uuid} dudu.number.less.than.ten=${random.int(10)} dudu.number.in.range=${random.int[1024,65536]}
外部配置-命令行参数配置
Spring Boot是基于jar包运行的,打成jar包的程序可以直接通过下面命令运行:
java -jar xx.jar
可以以下命令修改tomcat端口号:
java -jar xx.jar --server.port=9090
可以看出,命令行中连续的两个减号--就是对application.properties中的属性值进行赋值的标识。
所以java -jar xx.jar --server.port=9090等价于在application.properties中添加属性server.port=9090。
如果你怕命令行有风险,可以使用SpringApplication.setAddCommandLineProperties(false)禁用它。
实际上,Spring Boot应用程序有多种设置途径,Spring Boot能从多重属性源获得属性,包括如下几种:
根目录下的开发工具全局设置属性(当开发工具激活时为~/.spring-boot-devtools.properties)。
测试中的@TestPropertySource注解。
测试中的@SpringBootTest#properties注解特性。
命令行参数
SPRING_APPLICATION_JSON中的属性(环境变量或系统属性中的内联JSON嵌入)。
ServletConfig初始化参数。
ServletContext初始化参数。
java:comp/env里的JNDI属性
JVM系统属性
操作系统环境变量
随机生成的带random.* 前缀的属性(在设置其他属性时,可以应用他们,比如${random.long})
应用程序以外的application.properties或者appliaction.yml文件
打包在应用程序内的application.properties或者appliaction.yml文件
通过@PropertySource标注的属性源
默认属性(通过SpringApplication.setDefaultProperties指定).
这里列表按组优先级排序,也就是说,任何在高优先级属性源里设置的属性都会覆盖低优先级的相同属性,列如我们上面提到的命令行属性就覆盖了application.properties的属性。
配置文件的优先级
application.properties和application.yml文件可以放在以下四个位置:
外置,在相对于应用程序运行目录的/congfig子目录里。
外置,在应用程序运行的目录里
内置,在config包内
内置,在Classpath根目录
同样,这个列表按照优先级排序,也就是说,src/main/resources/config下application.properties覆盖src/main/resources下application.properties中相同的属性
此外,如果你在相同优先级位置同时有application.properties和application.yml,那么application.properties里的属性里面的属性就会覆盖application.yml。
2.session 配置
springboot session默认时间是 1800秒。
配置文件添加:
server.session.timeout = 3000
工作原理:
http://blog.csdn.net/gaodebao1/article/details/51789188?readlog
相关推荐
尚硅谷springboot2笔记,加了一点自己见解
### SpringBoot概论 #### 1.1 SpringBoot简介 SpringBoot是Spring家族的一个新兴成员,旨在简化Spring应用的初始化配置。随着Spring框架的发展,虽然它提供了强大的功能,但复杂的XML配置让许多开发者望而却步。...
springboot2配置Lettuce连接池完整代码,采用common2-pool连接池,Lettuce为redis高级客户端,由于阅读官网文档太简单,无法完成配置,所有本示例是通过阅读源码后编写的
(一)首先 pom.xml 文件中引入相关的依赖 ...(二)springboot 的配置文件 application.yml中添加相关的配置 (三)流程资源 (四)编写Applocation主程序 (五)编写基于SpringBootTest的测试程序
SpringBoot2学习篇(超详细)
1.1、SpringBoot特性介绍 1.2、RESTful风格微服务 1.3、环境准备 1.4、SpringBoot2入门之HelloWorld 1.5、SpringBoot2 HelloWorld分析
SpringBoot2是一个由Pivotal团队提供的全新框架,它旨在简化Spring应用的初始搭建以及开发过程。SpringBoot基于约定优于配置的理念,通过自动配置和起步依赖来帮助开发者快速构建可独立运行的Java应用。在...
使用idea开发工具,基于springboot2.x、jwt鉴权、nginx集群,前后端分离的微信Oauth2.0一键登录和微信网页扫码支付测试开发demo
最新springboot2基础hiberante5完整项目,打包jar,运行jsp,包括后台与前台,拦截器,登录,后台下载就可以使用,注意不是jpa,里面有完整Dao,千万级数据项目分离的代码,为了适合老项目开发特意集成hiberante5....
SpringBoot 2.x 集成Thymeleaf的一个实例,教程地址:http://blog.csdn.net/u011561335/article/details/80307620,可参考使用。亲测可行。STS搭建。
基于SpringBoot2+Shiro+Thymeleaf的后台管理系统 基于SpringBoot2+Shiro+Thymeleaf的后台管理系统 基于SpringBoot2+Shiro+Thymeleaf的后台管理系统 基于SpringBoot2+Shiro+Thymeleaf的后台管理系统 基于SpringBoot2+...
【资源说明】 1、该资源包括项目的全部源码,下载可以直接使用! 2、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末大作业和毕设项目,...基于SpringBoot2+Shiro+Thymeleaf的后台管理系统源码+数据库.zip
springboot相关技术介绍及与其他技术的配合讲解
课程内容以时下最新的技术点为主线,逐步的进行展开,分别细化的讲解了SpringBoot2基础课程,SpringBoot2底层注解,SpringBoot2自动化配置,SpringBoot2请求处理,SpringBoot2高级特性和原理分析,是不可错过的...
java SpringBoot2管理系统源码,一个基于SpringBoot2的管理后台系统 包含了用户管理,组织机构管理,角色管理,功能点管理,菜单管理,权限分配,数据权限分配,代码生成等功能 系统基于SpringBoot2技术 java ...
Springboot 2.4.4 网上搜到的配置多个DispatcherServlet 都有坑,自己避坑写的一个demo,处理.do .htm请求,Controller分离不会出现一个Controller可以处理.do也处理.htm可自己扩展.action .json等,适合分离前台...
springboot高级,了解并熟悉什么是springboot
添加公众号:猿有一技,回复 :Spring ,获取SpringBoot2.x quartz yml完整配置
java SpringBoot2管理系统源码,一个基于SpringBoot2的管理后台系统,包含了用户管理,组织机构管理,角色管理,功能点管理,菜单管理,权限分配,数据权限分配,代码生成等功能 系统基于SpringBoot2技术。
spring boot 2 发送邮件代码,包括普通邮件,html邮件,附件邮件等