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

关于Spring中Bean的原理以及相关的注解

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

关于Spring中Bean的原理以及相关的注解

首先看一些常见的Spring注解:

图中的其他注解都是@component的扩展。

 

 

这张图是Bean和Spring的关系图:

 一旦在代码中使用关于Spring的注解出现在类里,例如我在实现类中用到了@Autowired注解,被注解的这个类是从Spring容器中取出来的,那调用的实现类也需要被Spring容器管理,加上@Component这个注释或者是它的扩展注释(见上文)。

Java Bean的原理:


在一般情况下,Spring IOC容器中的一个Bean即对应配置文件中的一个,这种镜像对应关系应该容易理解。其中id为这个Bean的名称,通过容器的getBean("xxx")即可获取对应的Bean,在容器中起到定位查找的作用,是外部程序和Spring IOC容器进行交互的桥梁。class属性指定了Bean对应的实现类。

 

在普通的类中只要标注@Configuration注解,就可以为spring容器提供Bean定义的信息了,每个标注了@Bean的类方法都相当于提供了一个Bean的定义信息。

Bean的注入方式:

Bean注入的方式有两种,一种是在XML中配置,此时分别有属性注入、构造函数注入和工厂方法注入;另一种则是使用注解的方式注入@Autowired、@Resource这里不解释前一种。

@Autowired默认按类型匹配的方式,在容器查找匹配的Bean,当有且仅有一个匹配的Bean时,Spring将其注入到@Autowired标注的变量中。如果容器中没有一个和标注变量类型匹配的Bean,Spring容器启动时将报NoSuchBeanDefinitionException的异常。如果希望Spring即使找不到匹配的Bean完成注入也不用抛出异常,那么可以使用@Autowired(required=false)进行标注。一般为true。如果容器中有一个以上匹配的Bean时,则可以通过@Qualifier注解限定Bean的名称。、

 还可以标注方法,如果一个方法拥有多个入参,在默认情况下,Spring自动选择匹配入参类型的Bean进行注入。Spring允许对方法入参标注@Qualifier以指定注入Bean的名称。

 一般情况下,在Spring容器中大部分的Bean都是单实例的,所以我们一般都无须通过@Repository、@Service等注解的value属性为Bean指定名称,也无须使用@Qualifier按名称进行注入。 @Resource则按名称匹配注入Bean。如果@Resource未指定"car"属性,则也可以根据属性方法得到需要注入的Bean名称。

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

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

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