博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
springboot - 配置文件说明
阅读量:6329 次
发布时间:2019-06-22

本文共 1829 字,大约阅读时间需要 6 分钟。

  hot3.png

Spring Boot提倡基于Java的配置。尽管你可以使用XML源调用SpringApplication.run(),不过还是建议你使用@Configuration类作为主要配置源。

你不需要将所有的@Configuration放进一个单独的类,@Import注解可以用来导入其他配置类。或者使用@ComponentScan注解。

可以使用 @ImportResource注解加载XML配置文件。

 

实现自动配置有两种可选方式,分别是将@EnableAutoConfiguration或@SpringBootApplication注解到@Configuration类上。通常只需加在main方法上。

 

如果发现启用了不想要的自动配置项,你可以使用@EnableAutoConfiguration注解的exclude属性禁用它们。如:

@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})

 

@SpringBootApplication注解等价于以默认属性使用@Configuration,@EnableAutoConfiguration和@ComponentScan

@SpringBootApplication // same as @Configuration @EnableAutoConfiguration @ComponentScanpublic class Application {    public static void main(String[] args) {        SpringApplication.run(Application.class, args);    }}

 

除了使用application.properties作为配置文件名,如果想要指定其他外部配置文件,可以根据spring.config.name和spring.config.location决定加载哪个文件,但是它们必须定义为environment属性(通常为OS env,系统属性或命令行参数)。

如果使用环境变量而不是系统属性,需要注意多数操作系统的key名称不允许以句号分割(period-separated),但你可以使用下划线(underscores)代替(比如,使用SPRING_CONFIG_NAME代替spring.config.name)。

如果应用运行在容器中,那么JNDI属性(java:comp/env)或servlet上下文初始化参数可以用来代替环境变量或系统属性,当然也可以使用环境变量或系统属性。

 

@ConfigurationProperties 用于第三方组件的配置。其中使用此注解有宽松绑定。包括虚线分割(比如,context-path绑定到contextPath),将environment属性转为大写字母(比如,PORT绑定port)。形如:

@ConfigurationProperties(prefix="person")public class OwnerProperties {    private String firstName;    public String getFirstName() {        return this.firstName;    }    public void setFirstName(String firstName) {        this.firstName = firstName;    }}

以下属性名都能使用

属性

说明

person.firstName

标准驼峰规则

person.first-name

虚线表示,推荐用于.properties和.yml文件中

person.first_name

下划线表示,用于.properties和.yml文件的可选格式

PERSON_FIRST_NAME

大写形式,使用系统环境变量时推荐

如果你为自己的组件定义了一系列的配置keys,我们建议你将它们以@ConfigurationProperties注解的POJO进行分组。由于@Value不支持relaxed绑定,所以如果你使用环境变量提供属性值的话,它就不是很好的选择。

转载于:https://my.oschina.net/lemos/blog/831614

你可能感兴趣的文章
[Guava源码日报](3)Joiner分析
查看>>
Coding and Paper Letter(二十)
查看>>
记一次libfreenect2安装配置的经历
查看>>
前端开发常见问题精选(五)
查看>>
Django快速分页
查看>>
用HTML和JS来开发移动app - 计算器app功能实现
查看>>
3D Robotics转型新动作,将为亚特兰大机场提供站点扫描服务
查看>>
第174天:面向对象——公有属性、私有属性和静态属性
查看>>
读书笔记 effective c++ Item 26 尽量推迟变量的定义
查看>>
分享手淘过年项目中采用到的前端技术
查看>>
Git基本命令 -- 别名 + 忽略 + 推送
查看>>
MCMC(二)马尔科夫链
查看>>
设计模式是什么鬼
查看>>
【vuejs深入三】vue源码解析之二 htmlParse解析器的实现
查看>>
kubernetes ConfigMap
查看>>
Dubbo 同步、异步调用的几种方式
查看>>
Flask入门 表单Flask-wtf form原生与Bootstrap渲染(七)
查看>>
Android统计图表MPAndroidChart
查看>>
阿里云容器Kubernetes监控(二) - 使用Grafana展现Pod监控数据
查看>>
区块链应用 | 不知道什么时候起,满世界都在谈区块链的事情
查看>>