我最近将Spring Boot项目从2.2.0版本升级到2.3.1,但是我注意到我在Spring 2.2.0之前出现了一个错误。
未通过@EnableConfigurationProperties注册,标记为Spring组件或未通过@ConfigurationPropertiesScan扫描
打开
@Data
@ConfigurationProperties("sftp")
public class SftpProperties {
String host;
String user;
String password;
String baseDir;
}
在较早的Spring Boot版本中(我相信2.0.2或类似的东西),我已经在类上方用@Component
进行了注释,以便在类路径扫描期间将其提取。但是从2.2开始,我读到不再需要了,因此我删除了@Component
。这似乎是一个微妙的改进,但是从2.3.x开始,不再支持它。为什么会这样或我缺少什么?
答案 0 :(得分:0)
@ConfigurationProperties
不会使类成为Spring Component。您还需要在应用程序中添加@ConfigurationPropertiesScan
,以启用扫描以@ConfigurationProperties
注释的类。
答案 1 :(得分:0)
在Spring 2.2之前,主类应具有@EnableConfigurationProperties(SftpProperties .class)或在SftpProperties类上方使用@Configuration。
但是在2.2 Spring通过类路径扫描找到并注册@ConfigurationProperties类之后,因此不需要这些注释,您只需使用@ConfigurationPropertiesScan(“ property package path”)注释即可扫描自定义位置的配置属性类。
@SpringBootApplication
@ConfigurationPropertiesScan("com.app.properties")
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}