【Spring】Bean注册类注解

如果你不相信努力和时光,那么成果就会是第一个选择辜负你的。不要去否定你自己的过去,也不要用你的过去牵扯你现在的努力和对未来的展望。不是因为拥有希望你才去努力,而是去努力了,你才有可能看到希望的光芒。【Spring】Bean注册类注解,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

@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文件

【Spring】Bean注册类注解

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类型的数组

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/206156.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!