@ConfigurationProperties
是 Spring Boot 中的一个注解,用于将外部配置文件(如 application.yml
或 application.properties
)中的属性绑定到 Java 类上。这个注解通常与 @Component
或 @Configuration
一起使用,以便 Spring 容器能够管理这些配置类。
@ConfigurationProperties
,可以将所有相关的配置属性集中在一个类中,便于管理和维护。String
, int
, boolean
等。List
, Map
等。@ConfigurationProperties
如果有多个配置类使用了相同的 @ConfigurationProperties
前缀,Spring Boot 可能会混淆这些配置,导致属性绑定错误。
Spring Boot 默认情况下会根据前缀来绑定属性,如果多个类使用了相同的前缀,它会无法区分这些属性应该绑定到哪个类上。
@Qualifier
注解:
在注入时使用 @Qualifier
明确指定要使用的配置类。@Qualifier
注解:
在注入时使用 @Qualifier
明确指定要使用的配置类。@Primary
注解:
如果有一个配置类是主要的,可以使用 @Primary
注解来标记它。@Primary
注解:
如果有一个配置类是主要的,可以使用 @Primary
注解来标记它。假设有两个数据库配置类:
@ConfigurationProperties(prefix = "db1")
@Component
public class DatabaseConfig1 {
private String url;
private String username;
private String password;
// getters and setters
}
@ConfigurationProperties(prefix = "db2")
@Component
public class DatabaseConfig2 {
private String url;
private String username;
private String password;
// getters and setters
}
在 application.yml
中配置:
db1:
url: jdbc:mysql://localhost:3306/db1
username: user1
password: pass1
db2:
url: jdbc:mysql://localhost:3306/db2
username: user2
password: pass2
这样,Spring Boot 会根据前缀 db1
和 db2
分别绑定到 DatabaseConfig1
和 DatabaseConfig2
类上。
通过这种方式,可以有效避免多个具有相同类的 @ConfigurationProperties
导致的冲突问题。
领取专属 10元无门槛券
手把手带您无忧上云