Spring常见面试题

本文是通过收集网上各种面试指南题目及答案然后经过整理归纳而来,仅仅是为了方便以后回顾,无意冒犯各位原创作者。

1. 什么是Spring?

Spring 是个java企业级应用的开源开发框架。Spring主要用来开发Java应用,但是有些扩展是针对构建J2EE平台的web应用。Spring 框架目标是简化Java企业级应用开发,并通过POJO为基础的编程模型促进良好的编程习惯。

2. 使用Spring框架的好处?

  • 轻量:Spring 是轻量的,基本的版本大约2MB。
  • 控制反转:Spring通过控制反转实现了松散耦合,对象们给出它们的依赖,而不是创建或查找依赖的对象们。
  • 面向切面的编程(AOP):Spring支持面向切面的编程,并且把应用业务逻辑和系统服务分开。
  • 容器:Spring 包含并管理应用中对象的生命周期和配置。
  • MVC框架:Spring的WEB框架是个精心设计的框架,是Web框架的一个很好的替代品。
  • 事务管理:Spring 提供一个持续的事务管理接口,可以扩展到上至本地事务下至全局事务(JTA)。
  • 异常处理:Spring 提供方便的API把具体技术相关的异常(比如由JDBC,Hibernate or JDO抛出的)转化为一致的unchecked 异常。

3. Spring 框架都有哪些模块

  • Spring核心容器:容器是Spring框架最核心的部分,它管理着Spring应用中Bean的创建、配置和管理。
  • Spring AOP模块:在此模块中,Spring对面向切面编程提供了丰富的支持。
  • 数据访问与集成
  • Web与远程调用
  • Instrumentation
  • 测试

4. BeanFactory 和 ApplicationContext 有什么区别?

BeanFactory 和 ApplicationContext 是Spring容器的不同实现,Spring容器负责创建对象,装配它们,配置它们并管理它们的整个生命周期。
BeanFactory是最简单的容器,提供基本的DI支持;ApplicationContext基于BeanFactory构建,并提供应用框架级别的服务,例如从属性文件解析文本信息以及发布应用时间给感兴趣的事件监听者。

5. 常见的ApplicationContext实现方式?

  • AnnotationConfigApplicationContext:从一个或多个基于Java的配置类中加载Spring应用上下文。
ApplicationContext context = new AnnotationConfigApplicationContext(com.springinaction.server.config.ServerConfig.class);
  • ClassPathXmlApplicationContext:从类路径下的一个或多个XML配置文件中加载上下文定义,把应用上下文的定义文件作为类资源。
ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");
  • FileSystemXmlApplicationContext:从文件系统下的一个或多个XML配置文件中加载上下文定义。
ApplicationContext context = new FileSystemXmlApplicationContext("c:/bean.xml");
  • XmlWebApplicationContext:从Web应用下的一个或多个XML配置文件中加载上下文定义。

6. bean的生命周期

  1. Spring对bean进行实例化(扩展:Spring什么情况下开始对bean进行实例化);
  2. Spring将值和bean的引用注入到bean多应的属性中;
  3. 如果bean实现了BeanNameAware接口,Spring将bean的ID传递给setBeanName()方法;
    • XXXAware在spring里表示对XXX可感知,通俗点解释就是:如果在某个类里面想要使用spring的一些东西,就可以通过实现XXXAware接口告诉spring,spring看到后就会给你送过来,而接收方式是通过实现接口唯一的方法setXXX。比如,有一个类想要使用当前的ApplicationContext,那么我们只需要让它实现ApplicationContextAware接口,然后实现接口中唯一的方法:void setApplicationContext(ApplicationContext applicationContext)就可以了,spring会自动调用这个方法将applicationContext传给我们。

猜你喜欢

转载自www.cnblogs.com/lanqiu5ge/p/9477501.html