ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

【架构师面试-Java编程基本功-15】-bean的装配与自动装配

2021-12-08 22:02:34  阅读:105  来源: 互联网

标签:装配 容器 15 Autowired Spring bean 自动


1:什么是 bean 装配

装配,或 bean 装配是指在 Spring 容器中把 bean 组装到一起,前提是容器需要知道bean 的依赖关系,如何通过依赖注入来把它们装配到一起。

2:什么是 bean 的自动装配

在 Spring 框架中,在配置文件中设定 bean 的依赖关系是一个很好的机制,Spring 容器能够自动装配相互合作的 bean,这意味着容器不需要和配置,能通过 Bean 工厂自动处理 bean 之间的协作。这意味着 Spring 可以通过向 Bean Factory 中注入的方式自动搞定 bean 之间的依赖关系。自动装配可以设置在每个 bean 上,也可以设定在特定的 bean 上。

3:解释不同方式的自动装配,spring 自动装配 bean 有哪些方式

在 spring 中,对象无需自己查找或创建与其关联的其他对象,由容器负责把需要相互协作的对象引用赋予各个对象,使用 autowire 来配置自动装载模式。

在 Spring 框架 xml 配置中共有 5 种自动装配:

no:默认的方式是不进行自动装配的,通过手工设置 ref 属性来进行装配 bean。

byName:通过 bean 的名称进行自动装配,如果一个 bean 的property 与另一 bean 的 name 相同,就进行自动装配。

byType:通过参数的数据类型进行自动装配。

constructor:利用构造函数进行装配,并且构造函数的参数通过byType 进行装配。

autodetect:自动探测,如果有构造方法,通过 construct 的方式自动装配,否则使用byType 的方式自动装配。

4:使用@Autowired 注解自动装配的过程是怎样的?

使用@Autowired 注解来自动装配指定的 bean。在使用@Autowired 注解之前需要在 Spring 配置文件进行配置,<context:annotation-config />。

在启动 spring IOC 时,容器自动装载了一个AutowiredAnnotationBeanPostProcessor 后置处理器,当容器扫描到@Autowied、@Resource 或@Inject 时,就会在 IOC 容器自动查找需要的bean,并装配给该对象的属性。在使用@Autowired 时,首先在容器中查询对应类型的 bean:

如果查询结果刚好为一个,就将该 bean 装配给@Autowired 指定的数据;

如果查询的结果不止一个,那么@Autowired 会根据名称来查找;

如果上述查找的结果为空,那么会抛出异常。解决方法时,使用required=false。

5:自动装配有哪些局限性?

自动装配的局限性是:

重写:你仍需用 和 配置来定义依赖,意味着总要重写自动装配。

基本数据类型:你不能自动装配简单的属性,如基本数据类型,String 字符串,和类。

模糊特性:自动装配不如显式装配精确,如果有可能,建议使用显式装配。

6:你可以在 Spring 中注入一个 null 和一个空字符串吗?

可以

标签:装配,容器,15,Autowired,Spring,bean,自动
来源: https://blog.csdn.net/chongfa2008/article/details/121749940

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有