在SpringBoot项目中使用@ConfigurationProperties注解进行配置文件绑定时往往会遇到两个问题:注释报错和IDE警告提示。

使用注释报错

以下面的示例代码,使用@ConfigurationProperties如下:

@Data // lombok注解
@ConfigurationProperties(prefix = "remote")
public class ServerProperties {

    private String ip;

    private String port;
}

会发现@ConfigurationProperties注解报如下错误:

Not registered via @EnableConfigurationProperties, marked as Spring component, or scanned via @ConfigurationPropertiesScan

为什么会报上面的错误?其实错误信息中已经很明确了。因为被注解的类没有进行实例化操作,比如没有使用@Component进行实例化操作。

修改之后如下:

@Data
@Component
@ConfigurationProperties(prefix = "remote")
public class ServerProperties {

    private String ip;

    private String port;

}

错误信息便消失了。

提示问题解决

image

但此时在IDEA的上面还会有对应的提示信息:

提示信息:

Spring Boot Configuration Annotation Processor not configured 

点开右上角的“Open Documentation”,进入官方文档的配置说明。根据官网的建议第一步操作,pom文件中添加如下配置:

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

添加依赖文件之后,提示信息变为如下:

image

提示已经变了,右上角也变为可以隐藏此提示消息了,点击隐藏即可。

但在官网还提示如果项目中定义了@ConfigurationProperties,还需要配置构建插件spring-boot-maven-plugin,用来阻止repackage的执行。

示例代码如下:

<project>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.springframework.boot</groupId>
                            <artifactId>spring-boot-configuration-processor</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

经过以上步骤,使用@ConfigurationProperties场景异常变解决了。



SpringBoot使用@ConfigurationProperties常见异常分析插图2

关注公众号:程序新视界,一个让你软实力、硬技术同步提升的平台

除非注明,否则均为程序新视界原创文章,转载必须以链接形式标明本文链接

本文链接:http://www.choupangxia.com/2020/11/26/springboot-configurationproperties/