Spring面试题

【Spring面试题】1、谈谈你对spring的理解?
Spring是个java企业级应用的开源开发框架,轻量级,基本的版本大约2MB,Spring的优点主要体现在IOC和AOP,他两说白了就是对工厂模式和代理模式的一个封装!
2、解释Spring中IOC, DI, AOP
IOC就是控制反转或依赖注入。简单点说就是以前我们需要一个对象的时候都是new出来,而spring的IOC就帮我们实现了这一点,通过Spring的bean工厂为你生成所需要的对象
AOP就是面向切面编程,比如说你每做一次对数据库操作,都要生成一句日志。如果,你对数据库的操作有很多类,那你每一类中都要写关于日志的方法。但是如果你用aop,那么你可以写一个方法,在这个方法中有关于数据库操作的方法,每一次调用这个方法的时候,就加上生成日志的操作。
3、Spring的IOC是解耦,AOP是干什么的?
AOP面向切面编程 将程序中的交叉业务逻辑(比如安全,日志,事务等),封装成一个切面,然后注入到目标对象(具体业务逻辑)中去。 比如: 很多方法可能会抛异常,你要记录这个异常到日志中去,可以写个拦截器类,在这个类中记录日志 在spring.xml中配置一个对这些要记录日志的方法的aop拦截器 在这个方法执行后调用这个拦截器,记录日志。这样就不用每次抛异常都要手动记录日志。 spring的事务管理用到的就是aop 这样也可以提高程序的内聚性。
4、 Bean 工厂和 Application contexts 有什么区别?
Application contexts提供一种方法处理文本消息,一个通常的做法是加载文件资源(比如镜像),它们可以向注册为监听器的bean发布事件。另外,在容器或容器内的对象上执行的那些不得不由bean工厂以程序化方式处理的操作,可以Application contexts中以声明的方式处理。Application contexts实现了MessageSource接口,该接口的实现以可插拔的方式提供获取本地化消息的方法。
5、有哪些不同类型的IOC(依赖注入)方式?
(1)构造器依赖注入:构造器依赖注入通过容器触发一个类的构造器来实现的,该类有一系列参数,每个参数代表一个对其他类的依赖
(2)Setter方法注入:Setter方法注入是容器通过调用无参构造器或无参static工厂 方法实例化bean之后,调用该bean的setter方法,即实现了基于setter的依赖注入。
6、Spring beans是什么?
Spring beans 是那些形成Spring应用的主干的java对象。它们被Spring IOC容器初始化,装配,和管理。这些beans通过容器中配置的元数据创建。比如,以XML文件中 的形式定义。Spring 框架定义的beans都是单件beans。在bean tag中有个属性”singleton”,如果它被赋为TRUE,bean 就是单件,否则就是一个 prototype bean。默认是TRUE,所以所有在Spring框架中的beans 缺省都是单件。
7、 一个 Spring Bean 定义 包含什么?
一个Spring Bean 的定义包含容器必知的所有配置元数据,包括如何创建一个bean,它的生命周期详情及它的依赖
8、Spring框架中的单例bean是线程安全的吗?
Spring框架中的单例bean不是线程安全的
9、Spring的注解有哪些?
@Component:是所有受Spring 管理组件的通用形式,@Component注解可以放在类的头上,@Component不推荐使用。
@Controller: @Controller对应表现层的Bean
@Service: @Service对应的是业务层Bean
@ Repository:@Repository对应数据访问层Bean
@Autowired: @Autowired 根据bean 类型从spring 上线文中进行查找,注册类型必须唯一
@RequestMapping:@RequestMapping 可以声明到类或方法上
@RequestParam
10、Spring有几种配置方式?
(1)基于xml的配置
(2)基于注解额配置
(3)基于java的配置

    推荐阅读