Java工程师面试集锦之Spring框架
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Java工程师面试集锦之Spring框架
1、什么是Spring?
Spring是个Java企业级应用的开源开发框架。Spring主要用来开发Java应用,但是有些扩展是针对构建J2EE平台的web应用。Spring框架目标是简化Java企业级应用开发,并通过POJO为基础的编程模型促进良好的编程习惯。
2、选择使用Spring框架的原因?
使用Spring:第一是使用它的IOC功能,在解耦上达到了配置级别。第二是使用它对数据库访问事务相关的封装。第三就是各种其他组件与Spring的融合,在Spring中更加方便快捷的继承其他一些组件。
3、Spring 是如何管理事务的?
spring的事务声明有两种方式,编程式和声明式。spring主要是通过“声明式事务”的方式对事务进行管理,即在配置文件中进行声明,通过AOP将事务切面切入程序,最大的好处是大大减少了代码量。
4、Spring IoC容器配置Bean的方式?
1)基于XML文件进行配置。
2)基于注解进行配置。
3)基于Java程序进行配置(Spring 3+)
5、Spring框架有哪些不同的模块?
核心容器模块、应用上下文模块Application context、AOP模块、JDBC抽象和DAO模块、O/R映射整合模块、Web模块、MVC框架模块。
6、一个简单的Spring应用程序包括什么?
这些应用程序像任何Java应用程序。它们是由多个类组成,每个类执行应用程序内的一个特定的功能。这些类的配置是通过一个XML文件向对方导入依赖。此XML文件描述如何配置类,称为Spring配置文件。
7、如何给Spring容器提供配置元数据?
有三种重要的方法给Spring 容器提供配置元数据:XML配置文件、基于注解的配置、基于Java的配置。
8、在Spring中如何注入一个Java集合?
Spring提供以下几种集合的配置元素:
1)类型用于注入一列值,允许有相同的值。
2)
3)
4)
9、在Spring框架中如何更有效地使用JDBC?
使用Spring JDBC框架,资源管理和错误处理的代价都会被减轻。所以开发者只需statements和queries从数据存取数据,JDBC也可以在Spring框架提供的模板类的帮助下更有效地被使用,这个模板叫JDBC Template 。
10、Bean 是如何被管理的?
在Spring框架中,一旦把一个bean纳入到Spring IoC容器之中,这个bean的生命周期就会交由容器进行管理,一般担当管理者角色的是BeanFactory或ApplicationContext。认识一下Bean的生命周期活动,对更好的利用它有很大的帮助。
概括来说主要有四个阶段:实例化,初始化,使用,销毁。
11、Spring中的自动装配有哪些限制?
1)如果使用了构造器注入或者setter注入,那么将覆盖自动装配的依赖关系。
2)基本数据类型的值、字符串字面量、类字面量无法使用自动装配来注入。
3)优先考虑使用显式的装配来进行更精确的依赖注入而不是使用自动装配。
12、Resource 是如何被查找、加载的?
Resource 接口是 Spring 资源访问策略的抽象,它本身并不提供任何资源访问实现,具体的资源访问由该接口的实现类完成——每个实现类代表一种资源访问策略。Spring 为Resource 接口提供了如下实现类:
1)UrlResource:访问网络资源的实现类。
2)ClassPathResource:访问类加载路径里资源的实现类。
3)FileSystemResource:访问文件系统里资源的实现类。
4)ServletContextResource:访问相对于 ServletContext 路径里的资源的实现类:
5)InputStreamResource:访问输入流资源的实现类。
6)ByteArrayResource:访问字节数组资源的实现类。这些 Resource 实现类,针对不同的的底层资源,提供了相应的资源访问逻辑,并提供便捷的包装,以利于客户端程序的资源访问。
13、有哪些常用的 Context?
最常被使用的 ApplicationContext 接口实现:
1)FileSystemXmlApplicationContext:该容器从 XML 文件中加载已被定义的 bean。在这里,你需要提供给构造器 XML 文件的完整路径。
2)ClassPathXmlApplicationContext:该容器从 XML 文件中加载已被定义的 bean。在这里,你不需要提供 XML 文件的完整路径,只需正确配置 CLASSPATH 环境变量即可,因为,容器会从 CLASSPATH 中搜索 bean 配置文件。
3)WebXmlApplicationContext:该容器会在一个 web 应用程序的范围内加载在 XML 文件中已被定义的 bean。
14、Spring中Bean的作用域有哪些?
1)singleton作用域
在默认情况下,spring的ApplicationContext容器在启动时,自动实例化所有singleton 的Bean并缓存于容器中.虽然启动时会花费一些时间,但带来两个好处:首先对Bean提前的实例化操作会及早发现一些潜在的配置问题.其次Bean以缓存的方式保存,当运行时使用到该Bean时就无须再实例化了,加快了运行效率.如果用户不希望在容器启动时提前实例化singleton的Bean,可以通过lazy-init属性进行控制.
2)prototype作用域
在默认情况下,spring容器在启动时不实例化prototype的Bean.此外,spring容器将prototype的Bean交给调用者后,就不再管理它的生命周期.
3)request作用域
每次HTTP请求都会创建一个新的Bean,HTTP请求处理完毕后,销毁这个Bean.该作用域仅适用于webApplicationContext环境.
4)session作用域
同一个HTTP session共享一个Bean,不同HTTP session使用不同的Bean,当HTTP Session结束后,实例才被销毁.该作用域仅适用于webApplicationContext环境
5)globalSession作用域
同一个全局session共享一个Bean,一般用于portlet应用环境,该作用域仅适用于webApplicationContext环境.
15、什么是IoC和DI?DI是如何实现的?
1)IOC
IOC是Inversion of Control的缩写,“控制反转”之意。软件系统在没有引入IOC 容器之前,对象A依赖于对象B,那么对象A在初始化或者运行到某一点的时候,自己必须