专栏首页冷冷不推荐使用Spring Boot 2.2.0 ,这个问题你肯定会遇

不推荐使用Spring Boot 2.2.0 ,这个问题你肯定会遇

> 项目推荐: Spring Cloud 、Spring Security OAuth2的RBAC权限管理系统 欢迎关注 最新版本实践

> 上篇文章讲到 Spring Boot 2.2.0 和 MyBatis 兼容问题,今天再来看一下 这个 boom change

ConfigurationProperties 注解使用

如上图,当配置文件中存在相同组的属性,用户名密码年龄 都属于用户属性的抽象,按面向的规则我们可以抽取出一个 UserPO类型使用 @ConfigurationProperties 将外部配置绑定到代码中的bean。同时可以像其他任何Spring bean一样在整个应用程序代码中注入和使用此bean。

  • application.properties
user.username=lengleng
user.password=123456
user.age=26
  • User POJO
/**
 * @author lengleng
 * @date 2019-11-08
 * <p>
 * 2.2 之前版本,必须使用 @Component 或者 @Configuration 声明成Spring Bean
 */
@Component
@ConfigurationProperties(prefix = "user")
public class User {
    private String username;

    private String password;

    private Integer age;
   
    ...
}

如上代码,当我们在使用 spring boot 2.2 之前版本 必须使用 @Component 或者 @Configuration 声明成Spring Bean,不然无法注入

  • 这里注意下 ConfigurationProperties@Value 的区别

ConfigurationPropertiesScan

  • 2.2.0 默认开启此功能 2.2.0 新增一个 @ConfigurationPropertiesScan 的注解,默认是开启的扫描 main 启动类所在的包路径的所有 ConfigurationProperties,所以可以不用再加 @Component 或者 @Configuration
  • 2.2.1 默认关闭此功能,需要显式指定此注解 实际在使用过程中 你会发现 @Profile 和这个注解的兼容问题, [@ConfigurationPropertiesScan not compatible with @Profile @ConfigurationProperties](https://github.com/spring-projects/spring-boot/issues/16612) 所以 Spring Boot 2.2.1 默认关闭了这个功能

若想开启,只需要在 启动类加上

总结

  1. 当你从 2.1.X 升级到 2.2 ,肯定不会遇到这个问题,因为默认兼容 @Component 扫描的形式
  2. 如果从 2.2.0 升级到 2.2.1 , 一定要特别小心此处,可能会导致你的配置类全部失效
  3. 到底加不加,在使用IDEA当前版本 给你提示

IDEA 2019.3 才会正式支持该注解

> 项目推荐: Spring Cloud 、Spring Security OAuth2的RBAC权限管理系统 欢迎关注

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 3天两版 Spring Boot 2.2.4 发布!紧急修复Spring Cloud Hoxton.SR1 兼容问题

    Spring Boot 2.2.4 发布了,可以从 repo.spring.io 和 Maven Central 获取。

    冷冷
  • SpringMVC 提交表单400 Bad Request

    第一种: 后台:  @RequestMapping(value="/add",method=RequestMethod.POST)     public Str...

    冷冷
  • Spring整合Hibernate 之上下文 Session 持久化对象和HibernateTemp

    HibernateTemplate和 session Spring 的 HibernateTemplate 可以管理会话和事务, 简化 DAO 实现. 但使用 ...

    冷冷
  • python技术面试题(十六)--数据结构与算法

    Good judgment comes from experience, and a lot of that comes from bad judgment.

    小闫同学啊
  • 最好用的日期范围选择组件:bootstrap-daterangepicker

    嗯,在我还没有发现bootstrap-daterangepicker组件时, 在页面需要选择日期范围时,我是傻乎乎的创建两个日期组件。 现在想想,以前的lo...

    沉默王二
  • [每日一题]平移运动

    估计大家今天忙开学迎新什么的都忙不过来了吧,今天介绍的这题呢,跟之前的题很像,也是数组的题 题目描述 有n个整数,使前面各数顺序向后移m个位置,最后m个数变成...

    编程范 源代码公司
  • 使用协议方法加载XIB

    BY
  • 内容平台 Medium 的技术体系

    Medium 是全球知名的内容平台,访问量惊人 据半年前的数据统计,用户在 Medium 上阅读时间的总和已经达到 2600年,每月有2500万阅读者,每周有数...

    dys
  • Mysql Explain 详解

    在日常工作中,我们会有时会开慢查询去记录一些执行时间比较久的SQL语句,找出这些SQL语句并不意味着完事了,些时我们常常用到explain这个命令来查看一个这些...

    幽鸿
  • 文本挖掘|R语言助力简·奥斯丁部分作品的情感分析

    ‍‍‍‍ 整理文本进行情感分析是典型的文本分析案例,当打算深度阅读一篇文章时,可以利用我们对单词的情感意图的理解来推断一篇文章是积极的还是消极的,或者其他可能带...

    黑妹的小屋

扫码关注云+社区

领取腾讯云代金券