Interview Spring

1. 什么是Spring

Spring是用于构建企业级应用的轻量级一站式框架

  • 一站是指Spring提供了表现层(SpringMVC)到业务层(Spring)再到持久层(SpringData)的全套解决方案
  • 轻量级是相对于其它重量级容器而言的。Spring的核心包很小,但是EJB很大,EJB在启动时需要消耗大量的内存,CPU

2. 谈谈你对Spring IoC和DI的理解,它们有什么区别

所谓IoC就是反转了对象的创建方式和依赖注入方式,以前对象的创建由开发人员自己维护,依赖关系(类成员有其它类)也是自己注入,现在可以反转给Spring去处理

3. BeanFactory接口和ApplicationContext接口有什么区别

ApplicationContext接口继承BeanFactory接口。它们都是bean工厂,或者说bean容器(IOC容器)。它按照我们的要求,生产我们需要的各种各样的bean,提供给我们使用。只是在生产bean的过程中,需要解决bean之间的依赖问题,才引入了依赖注入(DI)这种技术。也就是说依赖注入是beanFactory生产bean时为了解决bean之间的依赖的一种技术而已

BeanFactory是Spring原始的接口。具有的功能非常单一。实现BeanFactory的类,特点是在获取bean时才创建bean(采取延迟加载)。这是因为BeanFactory出现的年代较早,当时内存资源匮乏,用到bean再创建bean

ApplicationContext是Spring的新型接口。具有较多的功能。ApplicationContext容器在启动时就会创建所有配置的对象,而不是等到用户获取bean时再创建

4. IOC的优点是什么

IOC 或 依赖注入把应用的代码量降到最低。它使应用容易测试,单元测试不再需要单例和JNDI查找机制。最小的代价和最小的侵入性使松散耦合得以实现。IOC容器支持加载服务时的饿汉式初始化和懒加载。

5. Spring框架中的单例Bean是线程安全的吗

Spring框架并没有对单例bean进行任何多线程的封装处理。关于单例bean的线程安全和并发问题需要开发者自行去搞定。但实际上,大部分的单例Bean并没有可变的状态(比如Serview类和Dao类),所以在某种程度上说Spring的单例bean是线程安全的。如果你的bean有多种状态的话(比如 View Model 对象),就需要自行保证线程安全。

6. 在Spring中如何注入一个Java集合?

Spring提供以下几种集合的配置元素:

  • <list>类型用于注入一列值,允许有相同的值。
  • <set> 类型用于注入一组值,不允许有相同的值。
  • <map> 类型用于注入一组键值对,键和值都可以为任意类型。
  • <props>类型用于注入一组键值对,键和值都只能为String类型。
panchaoxin wechat
关注我的公众号
支持一下