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配置详解的更多相关文章

  1. 【Spring】——声明式事务配置详解

    项目中用到了spring的事务: @Transactional(rollbackFor = Exception.class, transactionManager = "zebraTrans ...

  2. Spring学习(十九)----- Spring的五种事务配置详解

    前段时间对Spring的事务配置做了比较深入的研究,在此之间对Spring的事务配置虽说也配置过,但是一直没有一个清楚的认识.通过这次的学习发觉Spring的事务配置只要把思路理清,还是比较好掌握的. ...

  3. spring, spring mvc, mybatis整合文件配置详解

    转自:http://www.cnblogs.com/wxisme/p/4924561.html 使用SSM框架做了几个小项目了,感觉还不错是时候总结一下了.先总结一下SSM整合的文件配置.其实具体的用 ...

  4. Spring Boot 2.0 教程 - 配置详解

    Spring Boot 可以通过properties文件,YAML文件,环境变量和命令行参数进行配置.属性值可以通过,@Value注解,Environment或者ConfigurationProper ...

  5. spring boot slf4j日记记录配置详解

    https://blog.csdn.net/liuweixiao520/article/details/78900779

  6. Spring MVC的web.xml配置详解(转)

    出处http://blog.csdn.net/u010796790 1.spring 框架解决字符串编码问题:过滤器 CharacterEncodingFilter(filter-name) 2.在w ...

  7. Spring mvc的web.xml配置详解

    1.spring 框架解决字符串编码问题:过滤器 CharacterEncodingFilter(filter-name) 2.在web.xml配置监听器ContextLoaderListener(l ...

  8. 《Java Spring框架》Spring切面(AOP)配置详解

    1.  Spring 基本概念 AOP(Aspect Oriented Programming)称为面向切面编程,在程序开发中主要用来解决一些系统层面上的问题,比如日志,事务,权限等待,Struts2 ...

  9. 1、Spring MVC的web.xml配置详解(转)

    版权声明:本文为博主原创文章,转载请注明出处http://blog.csdn.net/u010796790 1.spring 框架解决字符串编码问题:过滤器 CharacterEncodingFilt ...

  10. Spring中配置文件applicationContext.xml配置详解

    <?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.spr ...

随机推荐

  1. java基本类型和包装类型的区别以及object的公共方法

    Java的类型分为两部分,一个是基本类型(primitive),如int.double等八种基本数据类型: 一.基本数据类型: byte:Java中最小的数据类型,在内存中占8位(bit),即1个字节 ...

  2. Appium 教您完美win10安装Appium1.7.2支持win客户端自动化

    参考内容: https://testerhome.com/topics/10193https://testerhome.com/topics/8223https://testerhome.com/to ...

  3. git学习(1)

    一.git fetch 和git pull 的差别 1.git fetch 相当于是从远程获取最新到本地,不会自动merge,如下指令: git fetch orgin master //将远程仓库的 ...

  4. SQL With As 用法Sql 四大排名函数(ROW_NUMBER、RANK、DENSE_RANK、NTILE)简介

    Sql 四大排名函数(ROW_NUMBER.RANK.DENSE_RANK.NTILE)简介   排名函数是Sql Server2005新增的功能,下面简单介绍一下他们各自的用法和区别.我们新建一张O ...

  5. 洛谷——P1757 通天之分组背包

    P1757 通天之分组背包 题目背景 直达通天路·小A历险记第二篇 题目描述 自01背包问世之后,小A对此深感兴趣.一天,小A去远游,却发现他的背包不同于01背包,他的物品大致可分为k组,每组中的物品 ...

  6. ubuntu16.04安装jdk/mysql/tomcat (使用apt-get命令)

    安装jdk 更新系统安装包缓存,并且安装OpenJDK8 sudo apt-get update sudo apt-get install openjdk-8-jdk 检查jdk版本 java -ve ...

  7. java 多线程面试题

    1.什么是线程? 线程是操作系统能够运行的最小调度单位,他被包含在进程中,是进程中实际运作的单位. 2.线程和进程的区别 线程是进程的子集,一个进程有很多线程,每个线程执行不同的任务,不同的进程使用不 ...

  8. 开源GIS软件 2

    Android上的导航软件 AndNav AndNav 是一款 Android 手机上的 GPS导航软件(非开源).软件支持GPS定位信息,目的地查询,道路建议管理,导航提示等功能,十分强大的一款软件 ...

  9. zookeeper协调技术

    本文转自http://www.cnblogs.com/wuxl360/p/5817471.html 感谢作者 一.分布式协调技术 在给大家介绍ZooKeeper之前先来给大家介绍一种技术——分布式协调 ...

  10. CF #EDU R1 E

    最二的一次了~我开始以为是带有贪心的DP,谁知道想错了.后来才想明白,暴力二分+记忆化DP #include <iostream> #include <cstdio> #inc ...