SpringBoot系列(三)内置配置及自定义配置
2017-12-13 17:04
507 查看
在使用spring boot过程中,可以发现项目中只需要极少的配置就能完成相应的功能,这归功于spring boot中的模块化配置,在pom.xml中依赖的每个Starter都有默认配置,而这些默认配置足以满足正常的功能开发。
如果需要修改自定义修改默认配置,spring boot 提供了很简便的方法,只需要在application.properties 中添加修改相应的配置。(spring boot启动的时候会读取application.properties这份默认配置)
重启项目,启动日志可以看到:Tomcat started on port(s): 80(http) 启动端口为8888,浏览器中访问 http://localhost:80能正常访问。
更多:application.properties 全部配置项参考:Spring Boot属性文件配置文档(全部)
在application.yml中除了可以修改默认配置,我们还可以在这配置自定义的属性,并在实体bean中加载出来。
application.yml中配置自定义属性如下:
第一种:使用spring支持的@Value()加载
第二种:使用@ConfigurationProperties(prefix=”“) 设置前缀,属性上不需要添加注解。
注:@Data是lombok注解
在controller中注入并使用这两个Bean:
在application.properties内可以直接通过${}引用其他属性的值,如下:
在application.properties中如果需要获取随机数,可以通过${random},如下:
2、多环境配置
yml格式的配置文件方式如下:
以—分隔环境,各环境公共部分配置可以抽取放在最上面
用命令运行jar包启动应用的时候,可以指定相应的配置:
附:配置方式和优先级
注:命令行参数这种jar包指定参数启动应用的方式,可能是不安全的,我们可以设置禁止这种方式启动应用,如下:
application.yml配置文件如下:
如果需要修改自定义修改默认配置,spring boot 提供了很简便的方法,只需要在application.properties 中添加修改相应的配置。(spring boot启动的时候会读取application.properties这份默认配置)
一、修改默认配置
例1、spring boot 开发web应用的时候,默认tomcat的启动端口为8080,如果需要修改默认的端口,则需要在application.properties 添加以下记录:server.port=80
重启项目,启动日志可以看到:Tomcat started on port(s): 80(http) 启动端口为8888,浏览器中访问 http://localhost:80能正常访问。
更多:application.properties 全部配置项参考:Spring Boot属性文件配置文档(全部)
二、自定义属性配置
注:我这里使用的的是application.yml方式配置的,具体SpringBoot支持的配置及配置优先级后面会讲述;在application.yml中除了可以修改默认配置,我们还可以在这配置自定义的属性,并在实体bean中加载出来。
application.yml中配置自定义属性如下:
com: mySelf: profile: name: age: component: 当前分支是${com.mySelf.profile},描述:${com.mySelf.name},自定义属性age:${com.mySelf.age}
第一种:使用spring支持的@Value()加载
@Component @Data public class MySelf { @Value("${com.mySelf.profile}") private String profile; @Value("${com.mySelf.name}") private String name; @Value("${com.mySelf.age}") private String age; }
第二种:使用@ConfigurationProperties(prefix=”“) 设置前缀,属性上不需要添加注解。
@Data @Component @ConfigurationProperties(prefix = "com.mySelf") public class MySelfTwo { private String profile; private String name; private String age; }
注:@Data是lombok注解
在controller中注入并使用这两个Bean:
@Value("${com.mySelf.profile}") private String myName; @Autowired private MySelf mySelf; @Autowired private MySelfTwo mySelfTwo; @ResponseBody @RequestMapping(value = "myConfig") public String getMyConfig(){ String result=null; //result=myName; result=mySelf.toString(); //result=mySelfTwo.toString(); return result; }
三、application.properties 属性配置详解
1、参数引用与random随机数方法的使用在application.properties内可以直接通过${}引用其他属性的值,如下:
com: mySelf: profile: name: age: component: 当前分支是${com.mySelf.profile},描述:${com.mySelf.name},自定义属性age:${com.mySelf.age}
在application.properties中如果需要获取随机数,可以通过${random},如下:
#获取随机字符串 com.sam.randomValue=${random.value} #获取随机字符串:${random.value} #获取随机int:${random.int} #获取10以内的随机数:${random.int(10)} #获取10-20的随机数:${random.int[10,20]} #获取随机long:${random.long} #获取随机uuid:${random.uuid}
2、多环境配置
yml格式的配置文件方式如下:
--- spring: profiles: dev --- spring: profiles: prod
以—分隔环境,各环境公共部分配置可以抽取放在最上面
用命令运行jar包启动应用的时候,可以指定相应的配置:
--spring.profiles.active=dev
附:配置方式和优先级
这些方式优先级如下: a. 命令行参数 b. 来自java:comp/env的JNDI属性 c. Java系统属性(System.getProperties()) d. 操作系统环境变量 e. RandomValuePropertySource配置的random.*属性值 f. jar外部的application-{profile}.properties或application.yml(带spring.profile)配置文件 g. jar内部的application-{profile}.properties或application.yml(带spring.profile)配置文件 h. jar外部的application.properties或application.yml(不带spring.profile)配置文件 i. jar内部的application.properties或application.yml(不带spring.profile)配置文件 j. @Configuration注解类上的@PropertySource k. 通过SpringApplication.setDefaultProperties指定的默认属性
注:命令行参数这种jar包指定参数启动应用的方式,可能是不安全的,我们可以设置禁止这种方式启动应用,如下:
springApplication.setAddCommandLineProperties(false);
四、特殊形式配置
特殊形式配置指的是list、array、map等形式配置方式,具体如下:@Data @Component @ConfigurationProperties(prefix = "myProps") public class MyProps { private String simpleProp; private String[] arrayProps; private List<Map<String, String>> listProp1 = new ArrayList<>(); //接收prop1里面的属性值 private List<String> listProp2 = new ArrayList<>(); //接收prop2里面的属性值 private Map<String, String> mapProps = new HashMap<>(); //接收prop1里面的属性值 }
application.yml配置文件如下:
#自定义的属性和值 myProps: simpleProp: simplePropValue arrayProps: 1,2,3,4,5 listProp1: - name: abc value: abcValue - name: efg value: efgValue listProp2: - config2Value1 - config2Vavlue2 mapProps: key1: value1 key2: value2
相关文章推荐
- SpringBoot系列三:SpringBoot基本概念(统一父 pom 管理、SpringBoot 代码测试、启动注解分析、配置访问路径、使用内置对象、项目打包发布)
- Springboot-读取核心配置文件及自定义配置文件
- 如何在SpringBoot下读取自定义properties配置文件
- 如何在SpringBoot下读取自定义properties配置文件
- nagios系列(五)之nagios图形显示的配置及自定义插件检测密码是否修改详解
- springboot 曰志自定义logback配置
- 如何在SpringBoot下读取自定义properties配置文件
- nagios系列(五)之nagios图形显示的配置及自定义插件检测密码是否修改详解
- Spring Boot 系列(三)属性配置&自定义属性配置
- 自学angular系列―过滤器(内置和自定义)
- 如何在SpringBoot下读取自定义properties配置文件
- springboot读取自定义配置文件
- SpringBoot系列七:SpringBoot 整合 MyBatis(配置 druid 数据源、配置 MyBatis、事务控制、druid 监控)
- ASP.NET系列:自定义配置节点的复用
- SpringBoot系列之二intelliJ idea 配置Spring boot 热部署
- springboot系列文章(四)——fastjson、定时任务、全局异常配置
- springmvc系列(二)-自定义dispatcherservlet加载的xml配置文件
- SpringCloud系列:服务配置文件的进化历程(程序内置、程序外置、实时更新)
- 如何在SpringBoot下读取自定义properties配置文件
- SpringBoot系列(二)指定内置tomcat版本