Springboot 注解 @ConfigurationProperties

作用

@ConfigurationProperties注解主要作用就是将prefix属性指定的前缀配置项的值绑定到这个Bean上,默认情况下需要和@Component或者@Configuration一起使用才能生效

使用范围:可以用于类,方法上。

定义

@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Indexed
public @interface ConfigurationProperties {
    @AliasFor("prefix")
    String value() default "";

    @AliasFor("value")
    String prefix() default "";

    boolean ignoreInvalidFields() default false;

    boolean ignoreUnknownFields() default true;
}

参数

valueprefix功能相同,指的是将指定的前缀属性绑定到这个Bean上的属性。

ignoreInvalidFields: 默认false表示绑定到此对象时应忽略无效字段。一般字段类型错误(或无法细路制转换为正确类型)。例如:实体类中定义的可以是一个Boolean类型,但是配置项的值却是日期。

ignoreUnknownFields: 默认为true,表示绑定到此对象时应忽略实体类中不存在的字段,例如配置项中可能有一个同样前缀的配置,但是实体类中没有对应的属性。

使用

1、用在类上

在项目的application.properies文件中添加以下配置项

demo.datasource.config.host=127.0.0.1
demo.datasource.config.port=3306
demo.datasource.config.database=test
demo.datasource.config.username=root
demo.datasource.config.pwd=123
@Component
@Data
@ConfigurationProperties(prefix = "demo.datasource.config")
public class DataSourceProperties {
    private String host;
    private String port;
    private String database;
    private String pwd;
    private String username;

    @Override
    public String toString() {
        return "DataSourceProperties{" +
                "host='" + host + '\'' +
                ", port='" + port + '\'' +
                ", database='" + database + '\'' +
                ", pwd='" + pwd + '\'' +
                ", username='" + username + '\'' +
                '}';
    }
}

运行以下测试程序

@SpringBootTest
class DemoApplicationTests {

    @Autowired
    private DataSourceProperties dataSourceProperties;

    @Test
    void contextLoads() {
        System.out.println(dataSourceProperties);
    }

}

运行输出结果为:

DataSourceProperties{host='127.0.0.1', port='3306', database='test', pwd='123', username='root'}

从输出结果可以看出,DataSourceProperties类已经将配置文件中以demo.datasource.config为前缀的相关配置都写入到类对应的属性中。

2、用在方法上

@Getter
@Setter
public class DataSourceProperties {
    private String host;
    private String port;
    private String database;
    private String pwd;
    private String username;

    @Override
    public String toString() {
        return "DataSourceProperties{" +
                "host='" + host + '\'' +
                ", port='" + port + '\'' +
                ", database='" + database + '\'' +
                ", pwd='" + pwd + '\'' +
                ", username='" + username + '\'' +
                '}';
    }
}
@Configuration
public class DataSourceConfigure {

    @Bean
    @ConfigurationProperties(prefix = "demo.datasource.config")
    public DataSourceProperties dataSourceProperties(){
        return new DataSourceProperties();
    }
}
@SpringBootTest
class DemoApplicationTests {

    @Autowired
    private DataSourceProperties dataSourceProperties;

    @Test
    void contextLoads() {
        System.out.println(dataSourceProperties);
    }

}

运行输出结果为:

DataSourceProperties{host='127.0.0.1', port='3306', database='test', pwd='123', username='root'}

从输出结果可以看出,DataSourceProperties类已经将配置文件中以demo.datasource.config为前缀的相关配置都写入到类对应的属性中。

原创文章,作者:jiafegn,如若转载,请注明出处:https://www.techlearn.cn/archives/163

Previous 2022年9月1日
Next 2022年9月2日

相关推荐

  • SpringBoot 缓存 – jetcache

    简介 JetCache是一个基于Java的缓存系统封装,提供统一的API和强大的注解来简化缓存的使用。原生支持TTL、两级缓存、分布式自动刷新,还提供了Cache接口用于手工缓存操…

    springboot 2023年4月23日
    337
  • SpringBoot 整合Mybatis

    简介 MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBat…

    2024年8月28日
    309
  • SpringBoot Spring Event 业务解耦神器

    介绍 Spring Event是Spring框架中的一个事件机制,主要用于实现应用程序内部的事件传递与处理,它允许不同组件之间通过发布-订阅机制进行解耦通信,比如用户注册,订单创建…

    springboot 2024年1月11日
    301
  • SpringBoot 注解 @Autowired

    作用 实现依赖注入查找方式:@Autowired是先到容器查找类型,如果该类型只有一个那么就直接注入,有多个时再根据名字找使用范围:构造器、方法、参数、字段、注解参数:requir…

    springboot 2022年9月9日
    405
  • SpringBoot 分布式Session

    简介 现在随着分布式,微服务架构的日益成熟,越来越多的企业将传统的单体服务改造为微服务或是分布式架构,在分布式中就遇到session管理的问题,微服务架构中一个服务为了实现高可用至…

    springboot 2023年4月30日
    177
  • SpringBoot 依赖注入

    前言 SpringBoot 中通过注解实现依赖注入主要有以下几种: @Autowired注解 @Qualifier注解 @Resource注解 @Primary注解 @Autowi…

    springboot 2024年1月15日
    632
  • SpringBoot 全局异常统一处理

    前言 在实际的项目开发过程中,会有大量的异常发生,而我们并不能将异常信息反馈到用户,所以在返回结果的时候需要对异常进行处理,可是如果在每个Controller返回结果都需要进行异常…

    springboot 2023年4月29日
    126
  • SpringBoot 整合Druid数据源

    简介 Druid是阿里巴巴开源的数据库连接池,号称是Java语言中最好的数据库连接池,能够提供强大的监控和扩展功能。 优点 引入依赖 这里使用的是SpringBoot整合版的Dru…

    2023年3月26日
    169
  • SpringBoot 整合 Lombok

    简介 Lombok其实和Spring Boot关系不太大,只是这个工具太好用了,这里也整理记录一下。 Lombok是一个Java库可以与Java IDE(ItelliJ IDEA、…

    2024年8月28日
    261
  • SpringBoot 整合Log4j2日志框架

    简介 Apache Log4j 2是日志框架Log4j的升级,它比其前身Log4j 1.x提供了重要的改进, 并且参考了Logback中许多有用的改进,同时修复了Logback的一…

    springboot 2023年3月26日
    153