没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
Spring Boot � 动配置原理
小伙伴们是否想起曾经被 SSM 整合的恐惧?相信很多小伙伴都是有过这样的经历的,很多配置问题,各种排除扫描,导入
一个新的依赖得添加新的配置。自从有了 Spring Boot 之后,咋们就起飞了!各种零配置开箱即用,我们之所以开发起来能够这
么爽,自动配置的功劳少不了,今天我们就一起来讨论下 Spring Boot 自动配置原理。
本文主要分为三个部分:
SpringBoot 源码常见注解拾遗
SpringBoot 启动过程
SpringBoot 自动配置原理
1.
SpringBoot 源码常⽤注解拾遗
这部分主要讲解下 SpringBoot 源码中经常使用到的注解,以扫清后面阅读源码时候的障碍。
组合注解
当可能�量同时使�到�个注解到同�个类上,就可以考虑将这�个注解到别的注解上。被注解的注解我们就称之为组合注解。
元注解:可以注解到别的注解上的注解。
组合注解:被注解的注解我们就称之为组合注解。
@Value
@Value 就相当于传统 xml 配置�件中的 value 字段。
假设存在代码:
@ConfigurationProperties
@ConfigurationProperties
1
2
3
<bean class="Person">
<property name ="name" value="i am name"></property
>
</bean>
1
person.name=kundy
2
3
person.age=13
person.sex=male
上�代码等价于的配置�件:
我们知道配置�件中的 value 的取值可以是:
字�量
通 过 ${key} �式从环境变量中获取值
通 过 ${key} �式全局配置�件中获取值
#{SpEL}
所以,我们就可以通过
质量技术博�。
@ConfigurationProperties
如果我们需要取 N 个配置项,通过
的�式获取全局配置�件中的指定配置项。微信搜索 web_resource 回复 爆� 送你�
的�式去配置项需要�个�个去取,这就显得有点 low 了。我们可以使
� 。
标有 的类的所有属性和配置�件中相关的配置项进�绑定。(默认从全局配置�件中获取配置
值),绑定之后我们就可以通过这个类去访问全局配置�件中的属性值了。下�
看�个实例:
1.
在主配置�件中添加如下配置
2.
创建配置类,由于篇幅问题这�省略了 setter、getter �法,但是实际开发中这个是必须的,否则�法成功注�。另
外,@Component 这个注解也还是需要添加的。
3
4
5
6
7
@Value("i am name")
private String name;
}
@Value(${key})
@Value
1
2
@Component
@ConfigurationProperties(prefix = "person")
3
4
5
public class Person {
@ConfigurationProperties
1
2
3
public class Circle {
4
5
public void sayHi() {
System.out.println("Circle sayHi()");
}
6
7
}
1
2
@Import({Circle.class})
3
4
5
@Configuration
public class MainConfig {
}
这� 有�个 prefix 参数,主要是�来指定该配置项在配置�件中的前缀。
3.
测试,在 SpringBoot 环境中,编写个测试�法,注� Person 类,即可通过 Person 对象取到配置�件的值。
@Import
@Import 注解�持导�普通 java 类,并将其声明成�个bean。主要�于将多个分散的 java config 配置类融合成�个更�的
config 类。
@Import 注解在 4.2 之前只�持导�配置类。
在4.2之后 @Import 注解�持导�普通的 java 类,并将其声明成�个 bean。
@Import 三种 使⽤⽅式
直接导�普通的 Java 类。
配合�定义的 ImportSelector 使�。
配合
ImportBeanDefinitionRegistrar
使�。
1.
直接导⼊普通的 Java 类
1.
创建�个普通的 Java 类。
2.
创建�个配置类,��没有显式声明任何的 Bean,然后将刚才创建的 Circle 导�。微信搜索 web_resource 回复 爆� 送你�
质量技术博�。
3.
创建测试类。
6
7
8
private String name;
private Integer age;
private String sex;
9
}
1
public static void main(String[] args) {
剩余14页未读,继续阅读
资源评论
小小哭包
- 粉丝: 1900
- 资源: 3864
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功