自定义配置

application.yml中我们还可以定义自己需要的配置。举个例子,假如我这里需要配置一个日志埋点的接口,在请求本系统中一些接口时,调用日志埋点接口插入日志。这里可以做一个AOP切面。后续讲解 这个。这里主要讲解配置日志埋点的接口的URL。

这里,我们在application-dev.yml的配置文件中添加log.url=http://localhost:8081/log/insert

springboot3 自定义 Filter springboot自定义配置_配置文件


注意:yml文件中:之前必须要有一个空格。配置文件中配置完成以后,我们直接在测试Controller中获取该值即可。

springboot3 自定义 Filter springboot自定义配置_配置文件_02


此处的@Value注解我们应该很属性。

新建配置文件

如果有很多自定义的配置,方便管理又不想放在application-dev.yml,那么我们可以自定义properties配置文件。但是如果我们自己新建了properties配置文件以后,如何让SpringBoot知道有这个配置文件嘞?

springboot3 自定义 Filter springboot自定义配置_自定义_03


我们在resources文件夹下面创建自己的conf.properties文件。添加完成配置以后,则需要再启动类中添加@PropertySource注解。

springboot3 自定义 Filter springboot自定义配置_spring_04

简化

上述在自定义的配置文件中,如果有很多参数,每一个都使用@Value注解,很麻烦。

假如日志埋点接口的配置如下

springboot3 自定义 Filter springboot自定义配置_配置文件_05


新建LogConfig类

springboot3 自定义 Filter springboot自定义配置_spring_06


springboot3 自定义 Filter springboot自定义配置_自定义_07

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已经默认帮我们来管理。

springboot3 自定义 Filter springboot自定义配置_自定义_08


这里就可以使用。

在LogConfig类的上方有一个提示:Spring Boot Configuration Annotation Proessor not found in classpath

因为我在启动类这里添加了@PropertySource注解并指定了配置文件,在运行的测试的过程中是已经测试成功了。并没有在意这个问题。

springboot3 自定义 Filter springboot自定义配置_配置文件_09


搜索了一下这个问题的原因,解决方案如下:

pom.xml文件中添加依赖:

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-configuration-processor</artifactId>
	<optional>true</optional>
</dependency>

这个异常提示就消失了。