栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【返璞归真】Spring源码阅读一:组件注册

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【返璞归真】Spring源码阅读一:组件注册

想要查看前面的笔记请翻阅我的CSDN博客,作者码字不易,喜欢的话点赞,加个关注吧,后期还有很多干货等着你!
一、@Configuration&@Bean给容器中注册组件

@Configuration注解声明配置类、@Bean注解向容器中注册Bean,默认使用方法名作为id

二、@ComponentScan注解进行包扫描

指定包路径,就可以自动将添加了:@Controller、@Service、@Repository、@Component的类注册到容器中管理,并且可以配置相对应的规则(FiterType属性进行指定规则类型),进行排除或者是只导入某种类型的包。

三、@Scope设置组件的作用域

容器中默认是单实例Bean,可以使用@Scope中指定Bean的作用域(常用属性:prototype:多实例,singleton单实例(默认值),request:同一请求创建一个实例(不常用,通常放在请求域中),session:同一session创建一个实例(不常用,通常放在session中))

四、@Lazy-bean懒加载(针对于单实例Bean)

对于单实例Bean,会在容器启动的时候创建Bean,如果我们需要进行懒加载(比如不常用的Bean,不想让他消耗虚拟机内存),就可以在@Bean注解之上添加@Lazy-bean

五、@Conditional按照条件注册Bean

当前注解在源码中大量应用,作用是:你可以根据属性的条件,有选择的注册Bean,你可以放在类上或者是放在方法上,代码中应用广泛(比如多数据源配置,比如数据源的选择),
使用方式有很多,默认提供了Condition接口进行实现。还有一些拓展注解如:

六、@import给容器快速导入一个类

三种用法:

  1. 可以使用这个注解添加在类上,属性为需要倒入的类(单个倒入传入需要倒入的类,多个导入传入一个类数组),id为组件的全类名
  2. 实现一个提供的接口:importSelector,返回值是一个String[],元素为全类名
  3. 实现一个提供的接口:importBeanDefinitionRegistrar,没有返回值,有一个需要实现的方法(registerBeanDefinitions),方法参数中,提供了BeanDefinitionRegistry对象,可以自己进行Bean的注册(BeanDefinitionRegistry.registerBeanDefinition方法手动注册)
七、使用Spring提供的FactoryBean注册

实现接口:FactoryBean,会有三个方法需要实现:getObject()(注册Bean)、getObjectType()(返回Bean类型)、isSingleton()(Bean是否单例)。实现后,需要将你实现FactoryBean的类注册到容器中,这样就可以获取到对应的Bean了,注意这时候Bean的名称是你的工厂Bean的名称,但是类型是你getObjectType()返回的类型。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/572107.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号