一. 什么是spring 的内部bean ?
只有将bean用作另一个bean的属性时,才能将bean声明为内部bean。为了定bean,Spring基于XML的配置元素在或中提供了元素的使用。内部bean总是匿名的,它们总是作为原型。
二.什么是spring 装配?
当bean 在spring容器中组合在一起时,它被称为装配或bean装配。Spring容器需要知道需要什么bean以及容器应该如何使用依赖注入来讲bean绑定在一起,同时装配bean。
三.自动装配哪些方式?
Spring容器能够自动装配bean 。 也就是说,可以通过检查BeanFactory的内容让Spring 自动解析bean 的协作者。
自动装配的不同模式:
no - 这是默认设置,表示没有自动装配。应使用显示bean引用进行装配。
byName - 它根据bean的名称注入对象依赖项。它匹配并装配其属性与XML文件中由相同名称定义的bean。
byType - 它根据类型注入对象依赖项。如果属性的类型与XML文件中的一个bean名称匹配,则匹配并装配属性。
构造函数 - 它通过调用类的构造函数来注入依赖项。它有大量的参数。
autodetect - 首先容器尝试通过构造函数使用autowire装配,如果不能,则尝试通过byType自动装配。
四. 自动装配有什么局限?
覆盖的可能性 - 您始终可以使用和设置指定依赖项,这将覆盖自动装配。
基本元素类型 - 简单属性(如原数据类型,字符串和类)无法自动装配。
令人困惑的性质 - 总是喜欢使用明确的装配,因为自动装配不太精确。
五.什么是基于注解的容器配置?
不使用XML来描述bean装配,开发人员通过在相关的类,方法或字段声明上使用注解将配置移动到组件类本身。它可以作为XML设置的替代方案。
例如:Spring的Java配置是通过使用@Bean和@Configuration来实现。
@Bean注解扮演与元素相同的角色。
@Configuration 类允许通过简单调用同一个类中的其他@Bean方法来定义bean间依赖关系。
六.如何在Spring中启动注解装配?
默认情况下,Spring 容器中未打开注解装配。因此,要使用基于注解装配,我们需要通过配置 元素在Spring配置文件中启用它。
七.@Component,@Controller, @Repository,@Service 有什么区别?
@Component:这将Java类标记为Bean。它是任何Spring管理组件的通用构造。Spring 的组件扫描机制现在可以将其拿起并将其拉入应用程序环境中。
@Controller:这将一个类标记为Spring Web MVC控制器。 标有它的Bean会自动导入到IoC容器中。
@Service:此注解是组件注解的特化。它不会对@Component注解提供任何其他行为。可以在服务层中使用。
@Repository:这个注解是具有类似用途和功能的@Component注解的特化。它为DAO提供了额外的好处。它将DAO导入IoC容器,并使未经检查的异常有资格转换为Spring DataAccessException。
八.@Required注解有什么用?
@Required应用于bean属性setter方法。此注解仅指示必须在配置时使用bean定义中的显式属性值或使用自动装配填充受影响的bean属性。如果尚未填充受影响的bean属性,则容器将抛出BeanInitializationException。
九.@Autowired注解有什么用?
@Autowired可以更准确的控制应该在何处以及如何进行自动装配。此注解用于在setter方法,构造函数,具有任意名称或多个参数的属性或方法上自动装配bean。默认情况下,它是类型驱动的注入。
十.@Qualifier注解有什么用?
当创建多个相同类型的bean并希望仅使用属性装配其中一个bean时,可以使用@Qualifier注解和@Autowired通过指定应该装配哪个确切的bean来消除歧义。