【Spring】Bean注册注解
@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注册注解的更多相关文章
- Spring Bean注册解析(二)
在上文Spring Bean注册解析(一)中,我们讲解了Spring在注册Bean之前进行了哪些前期工作,以及Spring是如何存储注册的Bean的,并且详细介绍了Spring是如何解析 ...
- Spring Bean注册解析(一)
Spring是通过IoC容器对Bean进行管理的,而Bean的初始化主要分为两个过程:Bean的注册和Bean实例化.Bean的注册主要是指Spring通过读取配置文件获取各个bean的 ...
- Spring Bean注册和加载
Spring解密 - XML解析 与 Bean注册 Spring解密 - 默认标签的解析 Spring解密 - 自定义标签与解析 Spring解密 - Bean的加载流程
- spring bean注册之bean工厂方式
一般我们在spring中注册一个bean,直接 <bean id="websocket" class="com.sdyy.common.spring.websock ...
- 09.Spring Bean 注册 - BeanDefinitionRegistry
基本概念 BeanDefinitionRegistry ,该类的作用主要是向注册表中注册 BeanDefinition 实例,完成 注册的过程. 它的接口定义如下: public interface ...
- Spring bean注册
DefaultListableBeanFactory中: DefaultListableBeanFactory实现了BeanDefinitionRegistry,这个接口的实现完成BeanDefini ...
- spring bean注册和实例化
1.左边3个接口定义了基本的Ioc容器的2.HierarchicalBeanFactory增加了getParentBeanFactory()具备了双亲Ioc的管理能力3.ConfigurableBea ...
- spring 、spring boot 常用注解
@Profile 1.用户配置文件注解. 2.使用范围: @Configration 和 @Component 注解的类及其方法, 其中包括继承了 @Component 的注解: @Service. ...
- Spring bean到底是如何创建的?(上)
前言 众所周知,spring对于java程序员来说是一个及其重要的后端框架,几乎所有的公司都会使用的框架,而且深受广大面试官的青睐.所以本文就以常见的一个面试题"spring bean的生命 ...
- spring beans源码解读之--Bean的注解(annotation)
随着spring注解的引入,越来越多的开发者开始使用注解,这篇文章将对注解的机制进行串联式的讲解,不求深入透彻,但求串起spring beans注解的珍珠,展示给大家. 1. spring beans ...
随机推荐
- JUC学习笔记——共享模型之内存
JUC学习笔记--共享模型之内存 在本系列内容中我们会对JUC做一个系统的学习,本片将会介绍JUC的内存部分 我们会分为以下几部分进行介绍: Java内存模型 可见性 模式之两阶段终止 模式之Balk ...
- perl中sprintf函数的用法
对于某些字符串,需要输入为特定的格式,通过sprintf可以很方便的完成,不需要专门进行其他处理. 转载 perl中sprintf函数的使用方法.
- 第2-3-3章 文件处理策略-文件存储服务系统-nginx/fastDFS/minio/阿里云oss/七牛云oss
目录 5.2 文件处理策略 5.2.1 FileStrategy 5.2.2 AbstractFileStrategy 5.2.3 LocalServiceImpl 5.2.4 FastDfsServ ...
- 20、求解从1到20000内的所有水仙花数:每位数字的n次方之和等于其本身,n是这个数的位数。
/* 求解从1到20000内的所有水仙花数:每位数字的n次方之和等于其本身,n是这个数的位数. 共五位数,设置一个数组用来保存数字的每一位,数组的有效长度就是该数的位数.最后读取数组的每位数字来判断水 ...
- 深入浅出学习透析Nginx服务器的基本原理和配置指南「Keepalive性能分析实战篇」
Linux系统:Centos 7 x64 Nginx版本:1.11.5 Nginx 是一款面向性能设计的 HTTP 服务器,能反向代理 HTTP,HTTPS 和邮件相关(SMTP,POP3,IMAP) ...
- 【Shell脚本案例】案例1:服务器系统配置初始化
〇.目录 一.背景 新购买10台服务器,并安装Linux系统 目的:对操作系统进行配置的初始化 二.需求 1.设置时区并同步时间 2.禁用selinux安全机制 3.关闭防火墙(清空防火墙的默认策略, ...
- vba + ado +sql 连接数据库的常用操作方式
vba + ado +sql 连接Access.MySQL.Oracle Private Sub Connection_DBA() '********************************* ...
- 你的项目使用Optional了吗?
1.基本概念 java.util.Optional<T>类本质上就是一个容器,该容器的数值可以是空代表一个值不存在,也可以是非空代表一个值存在. 2.获取对象 2.1 相关方法 2.2 案 ...
- MongoDB安全加固,防止数据库攻击删除勒索威胁
前言: 今天发现前段时间自己搭建的一个系统的MongoDB数据找不到了,觉得很奇妙,然后登上MongoDB数据库发现多了一个名为READ__ME_TO_RECOVER_YOUR_DATA的数据库,里面 ...
- Django框架三板斧本质-jsonResponse对象-form表单上传文件request对象方法-FBV与CBV区别
目录 一:视图层 2.三板斧(HttpResponse对象) 4.HttpResponse() 5.render() 6.redirect() 7.也可以是一个完整的URL 二:三板斧本质 1.Dja ...