SpringBoot - @ConfigurationProperties注解使用详解

本文详细介绍了@ConfigurationProperties注解在Spring Boot中用于配置绑定的作用,它能将配置文件中的属性与Bean对象自动绑定。文章通过三种不同的方式展示了如何在@Component、@Configuration和@Bean上使用该注解,并提供了配置对象的示例代码和配置文件内容。同时,提到了支持的数据校验和复杂数据类型的绑定,使得配置管理更加便捷。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

@ConfigurationProperties注解的作用是什么?

将标注了@ConfigurationProperties注解的Spring容器中的Bean与配置文件中的属性进行一一绑定,用于更加快速、方便的读取配置文件的内容。
也就是:先将属性对象注册到Spring容器中,再进行属性的绑定。

@ConfigurationProperties注解可以搭配使用的注解有哪些?

只要能够将属性对象注册到Spring容器中的注解都可以搭配使用。
@RestController、@Service、@Repository、@Component、@Configuration、@Bean都可以和@ConfigurationProperties注解搭配使用。

@ConfigurationProperties注解如何使用?

1.需要将配置对象类注入到Spring容器中,一般使用@Component(组件类)进行注入,当然@RestController、@Service、@Repository都属于@Component,因为他们有更准确的意义,所以一般使用@Component;或者不使用组件类,而是在启动类上使用@EnableConfigurationProperties(DroolsProperties.class),将配置对象类注入到Spring容器中;或者在定义Bean的时候将配置信息和配置对象的属性进行一一绑定。
2.需要指定前缀,用于表示该前缀下面的配置信息需要和配置对象的属性进行一一绑定;
3.只能加载全局配置文件(application.yml/.properties,application-XXX.yml/.properties);
4.支持 数据校验,如:不能为空,长度,正则等校验;
5.支持复杂的数据类型,如:list、map;

①. 使用@Component + @ConfigurationProperties(prefix = “spring.drools”),这两个注解都标注在配置对象上。

DroolsProperties.java如下:

@Data
@Component
@ConfigurationProperties(prefix = "spring.drools")
public class DroolsProperties {

    // 规则文件和决策表的路径(多个目录使用逗号分割)
    private String path;

    // 更新缓存的轮询周期 - 单位:秒(默认30秒)
    private Long update;

    // 模式: stream 或 cloud(默认stream模式)
    private String mode;

    // 是否开启监听器:true = 开, false = 关闭(默认开启)
    private boolean listener;

    // 是否自动更新:true = 开, false = 关闭(默认开启)
    private boolean autoUpdate;

    // 是否开启DRL的语法检查: true = 开, false = 关闭(默认开启)
    private boolean verify;

    // 是否开启REDIS的缓存: true = 开, false = 关闭(默认开启)
    private boolean useRedis;
}

②. @EnableConfigurationProperties(DroolsProperties.class) + @ConfigurationProperties(prefix = “spring.drools”) ,注意:配置对象上的注解只有@ConfigurationProperties,@EnableConfigurationProperties标注在启动类上。

DroolsProperties.java内容同上:

@Data
@ConfigurationProperties(prefix = "spring.drools")
public class DroolsProperties {
	...
}
MySpringApplication.java如下:

@EnableCustomSwagger2
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
@EnableConfigurationProperties(DroolsProperties.class)
public class MySpringApplication{
    public static void main(String[] args) {
        SpringApplication.run(MySpringApplication.class, args);
    }
}

③. @Bean + @ConfigurationProperties(prefix = “spring.drools”),配置类上没有注解,在定义Bean时将将配置信息和配置对象的属性进行一一绑定。

DroolsProperties.java内容同上:

@Data
public class DroolsProperties {
	...
}
MySpringApplication.java如下:

@EnableCustomSwagger2
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
public class MySpringApplication{
	@Bean
    @ConfigurationProperties(prefix = "person")
    public DroolsProperties droolsProperties (){
        DroolsProperties p = new DroolsProperties();
        return p;
    }
    
    public static void main(String[] args) {
        SpringApplication.run(MySpringApplication.class, args);
    }
}

配置文件内容如下:

spring:
  drools:
    use-redis: true
    path: classpath:com/tiantu/damp/**/*.drl
    mode: stream
    auto-update: true
    update: 60
    listener: true
    verify: false
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cloneme01

谢谢您的支持与鼓励!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值