IT技术面试题资料|Spring面试题和答案大全(三)
Spring是个java企业级应用的开源开发框架。作为一个个轻量级的Java开发框架,它是为了解决企业应用开发的复杂性而创建的。

1.一个Spring Bean定义 包含什么?
一个Spring Bean的定义包含容器必知的所有配置元数据,包括如何创建一个bean,它的生命周期详情及它的依赖。
2.如何给Spring容器提供配置元数据?
Spring容器提供配置元数据。
XML配置文件。
基于注解的配置。
基于java的配置。
3.你怎样定义类的作用域?
当定义一个在Spring里,我们还能给这个bean声明一个作用域。它可以通过bean定义中的scope属性来定义。如,当Spring要在需要的时候每次生产一个新的bean实例,bean的scope属性被指定为prototype。另一方面,一个bean每次使用的时候必须返回同一个实例,这个bean的scope属性 必须设为singleton。
4.解释Spring支持的几种bean的作用域。
Spring框架支持以下五种bean的作用域:
singleton : bean在每个Spring ioc容器中只有一个实例。
prototype:一个bean的定义可以有多个实例。
request:每次http请求都会创建一个bean,该作用域仅在基于web的Spring ApplicationContext情形下有效。
session:在一个HTTP Session中,一个bean定义对应一个实例。该作用域仅在基于web的Spring ApplicationContext情形下有效。
global-session:在一个全局的HTTP Session中,一个bean定义对应一个实例。该作用域仅在基于web的Spring ApplicationContext情形下有效。
缺省的Spring bean的作用域是Singleton。
5. Spring框架中的单例bean是线程安全的吗?
不,Spring框架中的单例bean不是线程安全的。
6.解释Spring框架中bean的生命周期。
Spring容器 从XML文件中读取bean的定义,并实例化bean。
Spring根据bean的定义填充所有的属性。
如果bean实现了BeanNameAware接口,Spring传递bean的ID到setBeanName方法。
如果Bean实现了BeanFactoryAware接口,Spring传递beanfactory给setBeanFactory方法。
如果有任何与bean相关联的BeanPostProcessors,Spring会在postProcesserBeforeInitialization()方法内调用它们。
如果bean实现IntializingBean了,调用它的afterPropertySet方法,如果bean声明了初始化方法,调用此初始化方法。
如果有BeanPostProcessors和bean关联,这些bean的postProcessAfterInitialization()方法将被调用。
如果bean实现了DisposableBean,它将调用destroy()方法。
7. 哪些是重要的bean生命周期方法? 你能重载它们吗?
有两个重要的bean生命周期方法,第一个是setup, 它是在容器加载bean的时候被调用。第二个方法是teardown 它是在容器卸载类的时候被调用。
The bean标签有两个重要的属性(init-method和destroy-method)。用它们你可以自己定制初始化和注销方法。它们也有相应的注解(@PostConstruct和@PreDestroy)。
8.什么是Spring的内部bean?
当一个bean仅被用作另一个bean的属性时,它能被声明为一个内部bean,为了定义inner bean,在Spring的 基于XML的 配置元数据中,可以在或元素内使用元素,内部bean通常是匿名的,它们的Scope一般是prototype。
9.在Spring中如何注入一个java集合?a
Spring提供以下几种集合的配置元素:
类型用于注入一列值,允许有相同的值。
类型用于注入一组值,不允许有相同的值。
类型用于注入一组键值对,键和值都可以为任意类型。
类型用于注入一组键值对,键和值都只能为String类型。