自定义配置
application.yml
中我们还可以定义自己需要的配置。举个例子,假如我这里需要配置一个日志埋点的接口,在请求本系统中一些接口时,调用日志埋点接口插入日志。这里可以做一个AOP切面。后续讲解 这个。这里主要讲解配置日志埋点的接口的URL。
这里,我们在application-dev.yml
的配置文件中添加log.url=http://localhost:8081/log/insert
注意:yml文件中:
之前必须要有一个空格。配置文件中配置完成以后,我们直接在测试Controller中获取该值即可。
此处的@Value
注解我们应该很属性。
新建配置文件
如果有很多自定义的配置,方便管理又不想放在application-dev.yml
,那么我们可以自定义properties
配置文件。但是如果我们自己新建了properties
配置文件以后,如何让SpringBoot知道有这个配置文件嘞?
我们在resources
文件夹下面创建自己的conf.properties文件。添加完成配置以后,则需要再启动类中添加@PropertySource
注解。
简化
上述在自定义的配置文件中,如果有很多参数,每一个都使用@Value注解,很麻烦。
假如日志埋点接口的配置如下
新建LogConfig类
package com.demo.myspringboot2.config;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@Component
@ConfigurationProperties(prefix = "log")
@Data
public class LogConfig {
private String url;
private long timeOut;
private String contentType;
private int returnCode;
}
此处需要添加@Component
,@ConfigurationProperties(prefix = "log")
注解。并且配置文件中带-
的转为驼峰即可。prefix为前缀,即只匹配前缀为log的属性配置。
此处的@Data
为可选注解,本质是一个糖衣炮弹,只是帮我们默认添加构造方法,getter,setter。toString等方法。你可以去掉这么注解,使用IDEA添加也行。
接下来我们只需要在使用的地方引入该类即可。因为加了@Component
注解,Spring已经默认帮我们来管理。
这里就可以使用。
附
在LogConfig类的上方有一个提示:Spring Boot Configuration Annotation Proessor not found in classpath
。
因为我在启动类这里添加了@PropertySource
注解并指定了配置文件,在运行的测试的过程中是已经测试成功了。并没有在意这个问题。
搜索了一下这个问题的原因,解决方案如下:
在pom.xml
文件中添加依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
这个异常提示就消失了。