Spring Boot (5) Spring Boot配置详解
application.properties
application.properties是spring boot默认的配置文件,spring boot默认会在以下两个路径搜索并加载这个文件
src\main\resources
src\main\resources\config
配置系统参数
在application.properties中可以配置一些系统参数,spring boot会自动加载这个参数到相应的功能,如下
#端口,默认是8080
server.port=8088
#访问路径,默认为/
server.servlet.context-path=/test
测试:http://localhost:8088/test/hello
推荐使用yaml文件,后缀为yml
server:
port: 8088
servlet:
context-path: /test
注意冒号:后面有个空格 好处就是简洁 不用重复的写前缀 只保留一种即可,删掉properties
applicaiton.properties配置中文值的时候读取的时候会出现乱码问题,而yml不会
如果在定义user.name=xxx的时候也是读取不到的,因为spring boot首先会加在sytemEnvironment作为首个PropertySource mac会返回自己的登录账号
自定义properties文件
在spring boot启动类或配置类中添加以下注解,可再启动时载入自定义的配置文件
@PropertySource("classpath:config/xxx.properties")
如果要同时载入多个文件就用数组
@PropertySource(value={"classpath:config/a.properties","classpath:config/b.properties"})
自定义参数
新增a.properties
key1=values1
key2=values2
然后再java代码中使用@Value注解,在项目启动时会将自定义参数加载到全局变量。
@RestController //引入spring boot的web模块,就会自动配置web.xml等于web相关的内容
@PropertySource("classpath:a.properties")
public class HelloController { @Autowired
String testStr; @Value("${key1}")
String key1; @RequestMapping("/hello")
public String hello(){
return testStr+":"+key1;
}
}
访问:http://localhost:8088/test/hello
显示:Hello World:values1
批量注入到类变量
在a.properties中配置几个以user为前缀的参数
key1=values1
key2=values2
user.Id=4
user.userName=shabaidaweia
user.age=183
在java中用@ConfigurationProperties 将以user为前缀的参数注入到当前类的变量中,需要有set方法。
package com.spring.boot.utils; import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component; @Component
@ConfigurationProperties(prefix = "user")
public class UserProperties {
private Integer Id; public String getUserName() {
return userName;
} public void setUserName(String userName) {
this.userName = userName;
} private String userName;
private String age; public Integer getId() {
return Id;
} public void setId(Integer id) {
Id = id;
} public String getAge() {
return age;
} public void setAge(String age) {
this.age = age;
}
}
在controller中使用配置文件即可
@RestController
public class HelloController { @Autowired
private UserProperties userProperties; @GetMapping("/name")
public String name(){
return userProperties.getUserName();
}
}
参数引用
在properties中的各个参数之间也可以相互引用如下:
com.xxx.name=david
com.xxx.age=18
com.xxx.sayHi=${com.xxx.name}今年${com.xxx.age}岁了
多环境配置
我们在开发spring boot时,通常一套程序会被应用和安装到几个不同的环境,比如:开发、测试、生产等。其中每个环境的数据库地址、服务器端口、支付账号等配置都会不同,如果在为不同环境打包时都要频繁修改配置文件的话,那必将是个非常痛苦的事情。
在spring boot中多环境配置文件名需要满足 application-{profile}.properties格式,其中{profile}对应你的环境标识:
application-dev.properties 开发环境
application-test.properties 测试环境
application-prod.properties 生产环境
具体哪个配置文件会被加在,需要在application.properties中通过spring.profiles.active属性来设置,其值对应{profile}值。
如 spring.profiles.active=test 就会加在test.properties配置文件的内容
application.yml
spring:
profiles:
active: dev #指定读取哪个文件
application-dev.yml
server:
port: 8088
servlet:
context-path: /dev
application-prod.yml
server:
port: 8088
servlet:
context-path: /
application-test.yml
server:
port: 8088
servlet:
context-path: /test
启动项目:http://localhost:8088/dev/name
通过命令行设置属性值
通过java -jar xx.jar 启动项目时 可以输入 java -jar xx.jar --server.port = 8888 ,来设置xxx.jar对应的端口。
在命令行运行时,连续的两个减号 -- 就是对application.properties属性值进行赋值,所以这个命令等价于我们在application.properties中设置server.port=8888。
可以设置SpringApplication.setAddCommandLineProperties(false)。来进行屏蔽命令行设置参数
打开终端:进入项目目录,执行 mvn package 打包

或者在idea下方 Terminal中输入
打包完成后 进入target目录中,发现一个名为boot.war包

输入命令 java -jar boot-0.0.1-SNAPSHOT.war
访问:http://localhost:8088/dev/name shabaidaweia
再打开一个终端:

java -jar boot-0.0.1-SNAPSHOT.war --user.username=666 --server.port=8888
访问:http://localhost:8888/dev/name
显示:666
Spring Boot (5) Spring Boot配置详解的更多相关文章
- 【Spring】——声明式事务配置详解
项目中用到了spring的事务: @Transactional(rollbackFor = Exception.class, transactionManager = "zebraTrans ...
- Spring学习(十九)----- Spring的五种事务配置详解
前段时间对Spring的事务配置做了比较深入的研究,在此之间对Spring的事务配置虽说也配置过,但是一直没有一个清楚的认识.通过这次的学习发觉Spring的事务配置只要把思路理清,还是比较好掌握的. ...
- spring, spring mvc, mybatis整合文件配置详解
转自:http://www.cnblogs.com/wxisme/p/4924561.html 使用SSM框架做了几个小项目了,感觉还不错是时候总结一下了.先总结一下SSM整合的文件配置.其实具体的用 ...
- Spring Boot 2.0 教程 - 配置详解
Spring Boot 可以通过properties文件,YAML文件,环境变量和命令行参数进行配置.属性值可以通过,@Value注解,Environment或者ConfigurationProper ...
- spring boot slf4j日记记录配置详解
https://blog.csdn.net/liuweixiao520/article/details/78900779
- Spring MVC的web.xml配置详解(转)
出处http://blog.csdn.net/u010796790 1.spring 框架解决字符串编码问题:过滤器 CharacterEncodingFilter(filter-name) 2.在w ...
- Spring mvc的web.xml配置详解
1.spring 框架解决字符串编码问题:过滤器 CharacterEncodingFilter(filter-name) 2.在web.xml配置监听器ContextLoaderListener(l ...
- 《Java Spring框架》Spring切面(AOP)配置详解
1. Spring 基本概念 AOP(Aspect Oriented Programming)称为面向切面编程,在程序开发中主要用来解决一些系统层面上的问题,比如日志,事务,权限等待,Struts2 ...
- 1、Spring MVC的web.xml配置详解(转)
版权声明:本文为博主原创文章,转载请注明出处http://blog.csdn.net/u010796790 1.spring 框架解决字符串编码问题:过滤器 CharacterEncodingFilt ...
- Spring中配置文件applicationContext.xml配置详解
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.spr ...
随机推荐
- SQL上门
学习这个 介绍:SQL 是用于访问和处理数据库的标准的计算机语言.结构化化查询语言! SQL可以分为两大部分:数据操作语言(DML)和数据定义语言(DDL) 数据操作语言:select.update. ...
- Codeforces 912D - Fishes
传送门:http://codeforces.com/contest/912/problem/D 本题是一个概率问题——求数学期望. 在一个n×m的方格中,有k个“*”.每个格子里可能有0~1个“*”. ...
- 1、深度学习模型的基本结构——RNN
本系列为深度学习课程笔记,课程网址在http://speech.ee.ntu.edu.tw/~tlkagk/courses_MLDS17.html 深度学习的基本步骤:定义模型-->定义损失函数 ...
- hadoop balancer
一.balancer是当hdfs集群中一些datanodes的存储要写满了或者有空白的新节点加入集群时,用于均衡hdfs集群磁盘使用量的一个工具.这个工具作为一个应用部署在集群中,可以由集群管理员在一 ...
- scrapy——7 scrapy-redis分布式爬虫,用药助手实战,Boss直聘实战,阿布云代理设置
scrapy——7 什么是scrapy-redis 怎么安装scrapy-redis scrapy-redis常用配置文件 scrapy-redis键名介绍 实战-利用scrapy-redis分布式爬 ...
- log4net的相关使用笔记
1, XmlConfigurator 创建添加一个Tracer project,引用nuget上最新的log4net 在Tracer里新增一个AppLog类: public static class ...
- [TS-A1505] [清橙2013中国国家集训队第二次作业] 树 [可持久化线段树,求树上路径第k大]
按Dfs序逐个插入点,建立可持久化线段树,每次查询即可,具体详见代码. 不知道为什么,代码慢的要死,, #include <iostream> #include <algorithm ...
- 运维系列之一 Linux的文件与目录权限解析
在Linux中,万事万物皆文件,普通文件是文件,目录是文件,硬件设备也是文件,因此学习了解Linux中的文件非常重要. Linux中有三种文件类型: (1) 普通文件:又分为文本文件和二进制文件 (2 ...
- hibernate之一对多映射
目录 第一章 课程简介 第二章 Hibernate中的单向一对多关联 2-1 一对多映射简介 2-2 hibernate的基础配置 2-3 创建HibernateUtil工具类 2-4 在mysql数 ...
- java 线程 原子类相关操作演示样例 thinking in java4 文件夹21.3.4
java 线程 原子类相关操作演示样例 package org.rui.thread.volatiles; import java.util.Timer; import java.util.Time ...