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

2021/12/8 22:16:49

本文主要是介绍【架构师面试-Java编程基本功-15】-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 和一个空字符串吗?

可以



这篇关于【架构师面试-Java编程基本功-15】-bean的装配与自动装配的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程