文档章节

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

冷冷gg
 冷冷gg
发布于 2019/11/11 08:21
字数 573
阅读 290
收藏 1

> 项目推荐: 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权限管理系统 欢迎关注

</p>

© 著作权归作者所有

冷冷gg

冷冷gg

粉丝 801
博文 146
码字总数 75675
作品 1
潍坊
UI设计师
私信 提问
深入源码大白话理解SpringBoot 究竟是如何跑起来的?

前言背景 SprintBoot是当今最流行的项目构建框架,但是大多数人会像我一样开始只会用,怎么搭建项目,怎么让项目跑起来,但是有没有真正去研究一个简简单单的Hello World程序是如何运行起来的...

懿宁19931210
2019/01/09
320
0
是大三的我对大二的学弟要求高了吗?

目前我大三,学校四年制,在学校的一个校企合作公司实习。 先说一下我这三年都干了什么,然后再说我遇到的问题吧。 写着写着发现写得太长了,就单独提取出来放到另外一篇文章了:https://www...

侯坤林
2018/04/25
6.5K
47
SpringBoot 究竟是如何跑起来的?

不得不说 SpringBoot 太复杂了,我本来只想研究一下 SpringBoot 最简单的 HelloWorld 程序是如何从 main 方法一步一步跑起来的,但是这却是一个相当深的坑。你可以试着沿着调用栈代码一层一层...

编程SHA
2019/03/11
130
0
elasticsearch入门 springboot2集成elasticsearch 实现全文搜索,图文讲解带源码

springboot整合elasticsearch常用的方式有以下三种 1,Java API 这种方式基于TCP和ES通信,官方已经明确表示在ES 7.0版本中将弃用TransportClient客户端,且在8.0版本中完全移除它,所以不提倡...

码农小石头
2019/03/24
0
0
SpringBoot系列教材 (九)- 基础 - springboot 如何进行多配置切换

JAVA 框架 /SpringBoot / SpringBoot系列教材 (十)- 基础 - springboot中用yml方式进行配置 享 记 藏 登录后可下载 工具版本兼容问题 步骤 1 : yml 格式 步骤 2 : 同样内容,不同写法 步骤...

Airship
2019/08/28
98
0

没有更多内容

加载失败,请刷新页面

加载更多

六、Spring Cloud之配置中心config

前言 前面我们讲了微服务的注册中心、负载均衡、熔断处理、网管服务。接下来我们讲配置中心,为什么要用配置中心呢? 其实我们接触一段时间就可以发现,我们的项目还是非常多的,每个项目都有...

quellanan2
5分钟前
13
0
在Android的EditText视图中允许多行?

如何在Android的EditText视图中允许多行? #1楼 这对我有用 ,实际上这两个属性很重要: inputType和lines 。 此外,您可能需要一个滚动条,下面的代码显示了如何制作一个: <EditText ...

技术盛宴
9分钟前
13
0
分享自己写的JS版日期格式化和解析工具类,绝对好用!

前言 本来想模仿Java里面的SimpleDateFormat()对象的,但是感觉这样用起来不方便,所以还是直接写成单独的方法算了。 原文链接 日期格式化 2.1. 使用说明 formatDate(date, fmt),其中fmt支持...

SuShine
19分钟前
27
0
快递鸟api物流查询接口实现订阅物流轨迹单号查询功能对接调用

背景: 分享一篇关于在电商系统中同步物流轨迹到本地服务器的文章,当前方案使用了快递鸟集成api做为数据来源接口,这个接口是免费使用的,不过提供的功能还是非常强大的,有专门的售后维护团...

程序的小猿
24分钟前
24
0
Day08多态,abstract,接口

1.A:多态的概述:事物存在的多种形态。 B:多态前提:要有继承关系,方法重写和父类引用子类对象。 父类引用子类对象:Animal a = new Cat(); a.eat(); //效果等同于c.eat(); 2.多态中的...

Lao鹰
29分钟前
11
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部