使用自定义配置文件
在使用 SpringBoot 的过程中经常需要注入配置文件中的信息,就比如 resources 目录下的 application.properties,SpringBoot 默认的配置文件就是它,所以我们不需要额外的配置,直接在其
中写上我们需要的信息就行。但是想自己在其他目录下建配置文件该怎么办呢?此时就需要请出@PropertySource 注解来帮助我们完成这个需求。
@PropertySource可以指定用户自定义的配置文件,不支持读取.yml(.yaml)文件,底层是通过PropertiesLoaderUtils来读取数据的,支持properties的读取。
在resource/config目录下创建 person2.properties作为需要注入的自定义配置,代码如下:
@PropertySource 可以搭配 @Value 注解使用,也可以搭配 @ConfigurationProperties 使用。
value:指定要加载的属性文件的资源位置。字符串或字符串数组
ignoreResourceNotFound:当指定的配置文件不存在是否报错,默认是false;
比如上文中指定的加载属性文件是person2.properties,如果该文件不存在,则 ignoreResourceNotFound为true的时候,程序不会报错;如果 ignoreResourceNotFound 为 false 的时候,程序直接报错。
encoding:用于指定读取属性文件所使用的编码,通常使用UTF-8;
向Spring容器中添加组件
SpringBoot推荐使用@Configuration+@Bean
@configuration 用在类上方,声明这个类是一个spring配置类,执行的功能是代替spring的配置文件。
@Bean 用在方法上方,@bean一般与@configuration配合使用,用在@configuration类中的获取实例的方法上方。
@Bean常用参数:
name/value :用于指定Bean的名称,可以指定多个。如果省略不写,bean的名称就是方法名称。
@Bean 常搭配的注解:
@Scope(“value”):用于指定bean的Scope 值可以为prototype singleton(默认)request session
@Description(“value”) :指定Bean的描述 可以看作是一种注。
要查看容器中所有组件,可以在启动函数中这样写:
Profile 多环境配置
应用程序需要部署到不同运行环境时,一些配置细节通常会有所不同,最简单的比如日志,生产日志会将日志级别设置为WARN或更高级别,并将日志写入日志文件,而开发的时候需要日志级别为DEBUG,日志输出到控制台即可。 如果按照以前的做法,就是每次发布的时候替换掉配置文件,这样太麻烦了,Spring Boot的Profile就给我们提供了解决方案:
在Spring Boot中多环境配置文件名需要满足 application-{profile}.properties(或yaml) 的格式,
其中 {profile} 对应你的环境标识,比如:
application-dev.properties(或yaml/yml):开发环境
application-test.properties(或yaml/yml):测试环境
application-prod.properties(或yaml/yml):生产环境
profile也可以是其他自定义的值,但一般要有意义
想要使用对应的环境有两个方式:
1、在全局配置文件中使用 spring.profiles.active 属性来设置,值对应上面提到的{profile},这里是指dev、test、prod等。
properties 的写法:
yaml 的写法:
2、可以通过在启动命名上带参数指定,如java -jar projectName.jar --spring.profiles.active=dev