@Configuration

同@Component,将标注的类作为一个组件,区别是会使用Cglib动态代理,因此使用该注解的类不能是final的

与@Component的区别可见:Configuration和@Component的区别

Cglib动态代理和JDK动态代理区别可见:Cglib动态代理和JDK动态代理的对比

属性

value,一般用不到,会将该值传递给@Component

proxyBeanMethods,是否代理@Bean方法,详见 Configuration和@Component的区别

@Component

将标注的类作为一个组件使用,单例

属性

value,给组件起名,与@Resource一起使用,根据命名匹配注入对象

@Bean

标记方法用于创建一个Bean对象,并交给Spring IOC容器管理,@Bean标记的方法Spring只会调用一次,常用于@Configuration标记的类下

属性

value,同@Component的value属性

name,与value互为别名

autowire,已废弃,不谈

autowireCandidate,配置Bean是否为自动装配到其他Bean的候选者,默认为true,如果你不希望这个@Bean方法干扰到其他同类型的依赖注入,可能会用到

initMethod,初始化方法,传@Bean方法生成的对象方法名,在@Bean方法执行后执行,一般都会直接将初始化方法写到@Bean方法里,很少用

destroyMethod,销毁方法,在application context关闭时调用,方法不能有参数,可以抛异常,很少用

@ComponentScan/@ComponentScans

指定Spring IOC容器启动时扫描的Bean目录,并将Bean组件初始化后交个IOC容器管理

属性

value,需要扫描的组件路径,String数组类型

basePackages,与value互为别名

basePackageClasses,作用同basePackages,class数组类型,看注释是basePackages的安全用法,单独在每个包下建立专用的类或接口,用于被该属性标记

nameGenerator,指定beanName生成器,BeanNameGenerator的实现类

scopeResolver,指定@Scope注解的解析器,ScopeMetadataResolver的实现类

scopedProxy,指定Scope代理模式,ScopedProxyMode枚举,不使用代理(默认),JDK代理,Cglib代理

resourcePattern,组件扫描正则,例如:启动程序上的注解@SpringBootApplication包含该注解,此属性的默认值为 ../*.class,所以默认扫描启动类所在目录下的所有class文件

useDefaultFilters,是否使用默认过滤器,例如对@Component等注解的检测

includeFilters,组件扫描过滤器,@Filter数组

excludeFilters,组件排除过滤器,@Filter数组

lazyInit,是否对扫描到的组件进行懒加载

@Filter注解

@ComponentScan使用的过滤器

属性:

type:过滤器类型,FilterType枚举

value:与classes互为别名

classes:根据type,表示通过注解过滤,通过Class过滤,还是通过自定义过滤类过滤,class数组类型

pattern:根据type,表示正则表达式过滤或者AspectJ表达式

@Scope

使用在Bean注册类注解上,例如@Bean或@Component,一般用于多例需求,即每次自动注入时都会生成一个新的对象

属性

value,与scopeName互为别名

scopeName,使用哪种Scope类型,常用的有SCOPE_SINGLETON(单例),SCOPE_PROTOTYPE(多例,原型),SCOPE_REQUEST(同Request下单例),SCOPE_SESSION(同session下单例)

proxyMode,指定代理模式,ScopedProxyMode枚举,不使用代理(默认),JDK代理,Cglib代理

@Lazy

字面意思,懒加载,Spring启动时不创建,啥时候用,啥时候执行

属性

value,boolean类型,标记是否懒加载,没啥用,都用这个注解,一般也不会设为false吧

@Conditional

按需创建,满足条件时才会创建Bean对象

属性

value,Condition接口的实现类,如果返回true,则Spring IOC会进行加载

@Import

导入组件类,通常有四种用法:

  • 实现 ImportSelector 接口的类,重新接口中的选择方法,导入部分经过选择后的类到Spring IOC容器中

  • 实现 ImportBeanDefinitionRegistrar 接口的类,允许自定义BeanDefinition

  • @Configuration类,引入@Bean方法生成的对象到Spring IOC容器中

  • 普通类(Spring 4.2支持),将类引入到Spring IOC容器中

属性

value,需要导入的类,class类型的数组

【Spring】Bean注册注解的更多相关文章

  1. Spring Bean注册解析(二)

           在上文Spring Bean注册解析(一)中,我们讲解了Spring在注册Bean之前进行了哪些前期工作,以及Spring是如何存储注册的Bean的,并且详细介绍了Spring是如何解析 ...

  2. Spring Bean注册解析(一)

           Spring是通过IoC容器对Bean进行管理的,而Bean的初始化主要分为两个过程:Bean的注册和Bean实例化.Bean的注册主要是指Spring通过读取配置文件获取各个bean的 ...

  3. Spring Bean注册和加载

    Spring解密 - XML解析 与 Bean注册 Spring解密 - 默认标签的解析 Spring解密 - 自定义标签与解析 Spring解密 - Bean的加载流程

  4. spring bean注册之bean工厂方式

    一般我们在spring中注册一个bean,直接 <bean id="websocket" class="com.sdyy.common.spring.websock ...

  5. 09.Spring Bean 注册 - BeanDefinitionRegistry

    基本概念 BeanDefinitionRegistry ,该类的作用主要是向注册表中注册 BeanDefinition 实例,完成 注册的过程. 它的接口定义如下: public interface ...

  6. Spring bean注册

    DefaultListableBeanFactory中: DefaultListableBeanFactory实现了BeanDefinitionRegistry,这个接口的实现完成BeanDefini ...

  7. spring bean注册和实例化

    1.左边3个接口定义了基本的Ioc容器的2.HierarchicalBeanFactory增加了getParentBeanFactory()具备了双亲Ioc的管理能力3.ConfigurableBea ...

  8. spring 、spring boot 常用注解

    @Profile 1.用户配置文件注解. 2.使用范围: @Configration 和 @Component 注解的类及其方法, 其中包括继承了 @Component 的注解: @Service. ...

  9. Spring bean到底是如何创建的?(上)

    前言 众所周知,spring对于java程序员来说是一个及其重要的后端框架,几乎所有的公司都会使用的框架,而且深受广大面试官的青睐.所以本文就以常见的一个面试题"spring bean的生命 ...

  10. spring beans源码解读之--Bean的注解(annotation)

    随着spring注解的引入,越来越多的开发者开始使用注解,这篇文章将对注解的机制进行串联式的讲解,不求深入透彻,但求串起spring beans注解的珍珠,展示给大家. 1. spring beans ...

随机推荐

  1. C#实践炸飞机socket通信

    一.前言 最近老师要求做课设,实现一个 "炸飞机" 游戏,我是负责UI界面实现和Socket通信实现的,在这里想总结一下我实现Socket的具体过程,对其中的产生的问题和实现的方法 ...

  2. 【题解】CF1722F L-shapes

    题面传送门 其实这题根本不用搜索,有耐心即可. 可以发现,在 \(n\times m\) 范围内扫,可能合法的只有以下四种情况,其中蓝色代表示是 *,红色表示不能是 *,其中黄色五角星表示当前 \(i ...

  3. 通过docker部署grafana和mysql

    阅读本文需要一定的Linux, Docker与MySQL知识, 例如: 会启动容器, 进入容器; 会创建表, 会使用INSERT语句, 会使用SELECT语句... 1. 简介 2. 网络设置 - 2 ...

  4. PHY驱动调试之 --- MDIO/MDC接口22号和45号条款(一)

    最近在调试一款Phy的驱动,从没有任何头绪到略有了解经历了太多的痛苦,于是决定写这个系列篇记录一下.特别感谢无数优秀的博主无私奉献很多优秀的博文给予了我很大的帮助.在这个系列篇中,我也会转载部分优秀的 ...

  5. Spring03:案例转账功能(事务问题)、动态代理解决、AOP

    今日内容--核心2AOP 完善Account案例 分析案例中的问题 回顾之前讲过的技术--动态代理 动态代理的另一种实现方式 解决案例中的问题 AOP的概念 Spring中的AOP相关术语 Sprin ...

  6. 【每日一题】【递归+int型返回值最后不接收】110. 平衡二叉树-211231/220221

    给定一个二叉树,判断它是否是高度平衡的二叉树. 本题中,一棵高度平衡二叉树定义为: 一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 . 答案: public class Solution ...

  7. 【每日一题】【回溯】【StringBuilder】2021年12月7日-17. 电话号码的字母组合

    给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合.答案可以按 任意顺序 返回. 给出数字到字母的映射如下(与电话按键相同).注意 1 不对应任何字母. 来源:力扣(LeetCode)链 ...

  8. 【Java】二分查找标准代码

    太菜了..写不出正确的... 干脆放一个标准代码,之后参考 boolean BinarySearch(int[] m){ int l=0,r=m.length-1;//减1相当于数组两头(lr都能指到 ...

  9. PyTorch复现LeNet-5手写识别学习笔记

    用PyTorch搭建LeNet-5手写识别 首先申明,这篇博客用于记录本人看完LeNet-5论文,并对其中的算法进行复现的记录,可以看成是学习笔记 这里只介绍复现的工作,如果想了解更多有关网络的细节, ...

  10. Apache Dubbo 官方正式发布 Spring 6 & Spring Boot 3 支持

    Dubbo 简介 Apache Dubbo 是一款 RPC 服务开发框架,用于解决微服务架构下的服务治理与通信问题,官方提供了 Java.Golang 等多语言 SDK 实现.使用 Dubbo 开发的 ...