我准备战斗到最后,不是因为我勇敢,是我想见证一切。 --双雪涛《猎人》
[TOC]
Thinking
- 一个技术,为什么要用它,解决了那些问题?
- 如果不用会怎么样,有没有其它的解决方法?
- 对比其它的解决方案,为什么最终选择了这种,都有何利弊?
- 你觉得项目中还有那些地方可以用到,如果用了会带来那些问题?
- 这些问题你又如何去解决的呢?
声明:本文基于springboot 2.1.3 2.1.3.RELEASE
该注解是用于进行配置的,就是标识某一个类是一个配置类的注解。该注解是spring提供的。位于spring.context包下。
1、基于doc文档的解读
该注解用于类上,并且搭配@Bean
注解使该注解标识的方法变成由spring容器管理的Bean对象。每个方法上都会加上这样的一个Bean的注解,方法本身会返回一个对象。
根据class
类进行属性的注册。
另一种注册Bean的方式,为xml的方式。
其中<context:annotation-config> 是用于激活那些已经在spring容器里注册过的bean(无论是通过xml的方式还是通过package sanning的方式)上面的注解。
值得注意的是<context:component-scan/>不但启用了对类包进行扫描以实施注释驱动 Bean 定义的功能,同时还启用了注释驱动自动注入的功能(即还隐式地在内部注册了 AutowiredAnnotationBeanPostProcessor 和 CommonAnnotationBeanPostProcessor),因此当使用 <context:component-scan/> 后,就可以将 <context:annotation-config/> 移除了。
根据注解进行扫描
springboot 所以一般启动类都是在最外层的中,以保证默认情况下可以扫描到该类下的所有Bean,在SpringBoot的所有的组件中都会定义在主类的子包下。
加载外部的属性
在上面的doc中看出,在家在外部配置时,可以使用
@PropertySource
加载自定义的配置。可以指定一个或者多个。
使用@value
注解 注入 配置文件中的信息
使用@Import
组合多个配置类
这里的注入是可以使用
@Import
组合多个配置类
使用@Profile
给配置类进行区分
用于区分在同一个Bean 对象名中,具体的注入对象。
相当于在开发环境或者在测试环境中需要使用不同的数据库,所以这种只需要使用该注解就可以实现 一件转换了。
配合@ImportResource
导入xml文件中的配置
使用嵌套的@Configuration
类
这样在使用AppConfig 时,就已经隐式的将
DatabaseConfig
注入到该Bean中了,避免了显示的使用@Import
注解了。
使用懒加载 的配置类
默认情况下,Bean 是随容器启动时,一并创建好的,但是存在懒加载的需求是,可以使用
@Lazy
将配置类设置为懒加载。该注解也适用于所有的Bean类
测试类也是支持配置上下文的
其他
可以配置开启spring内置的各种功能。
2、成员变量
别名
默认情况下,如果在缺醒状态下,是使用bean的类名作为名称。
使用该注解的类,默认情况下是会使用
cglib
将所有的bean 动态生成。如果设置成
false
,则配置类就是一个普通的工厂类。
本文仅供笔者本人学习,有错误的地方还望指出,一起进步!望海涵!
转载请注明出处!
欢迎关注我的公共号,无广告,不打扰。不定时更新Java后端知识,我们一起超神。
——努力努力再努力xLg
加油!