1. 什么是Spring?java
Spring是一个反转控制IOC和AOP的开发框架和平台。
复制代码
2. 解释一下Spring?面试
1. **轻量 :** ***Spring*** 在大小和透明度上是轻量的,Spring基本核心版本大概只有1M,处理开销也很是小
2. **反转控制Inversion of control (IoC) :** Spring使用IOC实现松耦合,对象不是本身主动去寻找依赖而是依赖主动推给了本身。
3. **面向方面(AOP) :** Spring支持面向方面编程,从业务逻辑中分离关注,可以实现聚焦开发。.
4. 容器** :** ***Spring*** 容器包含和管理应用对象的生命周期。
5. **框架 :** ***Spring提供***最内核的功能,其他留给开发者本身开发。
复制代码
3. Spring框架有哪些不一样的模块?spring
1. 核心容器模块
2. 应用上下文模块Application context
3. AOP模块
4. JDBC抽象和DAO模块
5. O/R映射整合模块
6. Web 模块
7. MVC 框架模块
复制代码
4. Spring框架的结构如何?数据库
5. 什么是核心容器模块?编程
提供基本功能的Spring框架。在此模块中的BeanFactory是任何基于Spring的应用程序的心脏。整个框架是创建在本模块的基础之上。该模块生成Spring容器。
复制代码
6. 什么是应用上下文Application context模块?服务器
应用程序上下文模块使得Spring成为了一个框架。该模块扩展了BeanFactory的概念,国际化(I18N)消息,应用程序生命周期事件,和验证提供支持。此模块还提供了许多的企业服务,例如JNDI访问,EJB集成,远程和调度。它还提供了其余框架的支持。
复制代码
7. 什么是AOP模块?框架
该AOP模块用于Spring的应用程序开发方面。提供了大部分AOP联盟的支持,以确保Spring和其它AOP框架之间的互操做性。此模块还引入元数据编程。使用Spring的元数据支持咱们的源代码 ,经过引入元注释,指导咱们具体在哪里实现方面编程。
复制代码
8. 什么是JDBC和DAO抽象模块?工具
使用这个模块,咱们能够保持干净和简单的数据库的代码,并防止失败关闭数据库资源等问题。基于多个数据库服务器的出错信息之上创建的一个新的有意义的异常层。此外,该模块使用Spring的AOP模块实现事务管理。
复制代码
9. 什么是对象关系数据库映射整合模块?post
Spring支持使用一个对象/关系映射(ORM)工具,基于JDBC提供ORM模块。配合一些流行的ORM框架,包括Hibernate,JDO和iBATIS SQL映射。 Spring的事务管理也支持这些ORM框架以及JDBC。
复制代码
10. 什么是Web模块?spa
该模块是创建在应用上下文模块之上,提供了一个基于Web应用的上下文。此模块还包含几个面向Web的任务,好比多个文件上传和将请求参数透明地绑定到你的业务对象。它也包含与Jakarta Struts的集成支持。
复制代码
11. 什么是SpringMVC?
Spring提供了一个全功能的构建Web应用程序的MVC框架。虽然Spring能够很容易地集成到其余的MVC框架,如Struts,Spring的MVC框架使用IOC将控制器逻辑从业务对象中干净分离。它还容许您以声明方式绑定请求参数到你的业务对象。它还能够利用Spring的其余服务,如本地化消息和验证。
复制代码
12. 什么是BeanFactory?
一个BeanFactory是工厂模式的实现,使用反转控制将从应用程序的配置和依赖性从应用程序代码中分离。
复制代码
13. 什么AOP联盟?
AOP联盟是一个开放源码的项目,其目标是经过定义一套通用的接口和组件在不一样的AOP产品中实现AOP和互操做性推广。
复制代码
14. 什么是Spring配置文件?
Spring的配置文件是一个XML文件。此文件中包含的类信息,并描述这些类是如何配置,并实现相互的依赖导入。
复制代码
15. 一个简单的Spring应用程序包括什么?
这些应用程序像任何Java应用程序。它们是由多个类组成,每一个类执行应用程序内的一个特定的功能。这些类的配置是经过一个XML文件向对方导入依赖。此XML文件描述如何配置类,称为Spring配置文件。
复制代码
16. 什么是 XMLBeanFactory?
BeanFactory有不少实现,org.springframework.beans.factory.xml.XmlBeanFactory是其中有用经常使用的,它基于XML中定义加载Bean,为了建立一个 **XmlBeanFactory对象**, 须要将一个 java.io.InputStream传给他的构造器。**InputStream** 提供XML文件的读取。
BeanFactory factory = new XmlBeanFactory(new FileInputStream("beans.xml"));
MyBean myBean = (MyBean) factory.**getBean**(“myBean”);
复制代码
17. Spring中ApplicationContext的重要实现是什么?
1 .ClassPathXmlApplicationContext – 这个上下文是从规定的Class路径中加载一个XML资源。
2 .FileSystemXmlApplicationContext – 从文件系统中加载一个XML文件。
3 .XmlWebApplicationContext – 从一个Web应用中加载一个XML。
18. 解释一下Bean的生命周期?
1 Spring容器从XML中发现一个Bean的定义,而后初始化建立它们
2 使用依赖注入,Spring将这个Bean中须要的属性进行导入。
3 若是这个Bean实现 BeanNameAware 接口, 工厂将调用setBeanName() 传递Bean的ID。
4 若是bean实现BeanFactoryAware,工厂将调用 setBeanFactory(), 将本身的实例传给它。
5 若是这个bean有 BeanPostProcessors 关联,他们的**post- ProcessBeforeInitialization()**方法将被调用。
6 若是这个Bean有一个初始init方法,它将被调用。
7 最后,若是有关联对象 BeanPostProcessors ,**postProcessAfterInitialization()**方法将被调用。
19. 什么是Beand wiring?
将Bean结合在一块儿是wiring. 容器将把标注wiring须要的依赖对象注入到其中,将它们绑定在一块儿。
复制代码
20. 在Spring中如何加入一个Bean?
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="foo" class="com.act.Foo"/>
<bean id="bar" class="com.act.Bar"/>
</beans>
复制代码
21. 什么是单例Bean 如何建立一个原型Bean?
将Singleton设置为false,缺省它是true。
<beans>
<bean id="bar" class="com.act.Foo" singleton="false"/>
</beans>
复制代码
22. bean最重要的生命周期方法是什么?
有两个重要的bean的生命周期方法。第一个当bean时加载到容器时设置调用。第二种方法是bean从容器中卸载时被调用。
复制代码
23. 如何覆盖Bean生命周期方法?
<beans>
<bean id="bar" class="com.act.Foo" init-method="fooSetup" destroy="fooTeardown"/>
</beans>
复制代码
24. 什么是内部inner Bean?
当wiring一个Bean时,若是一个bean元素被嵌入到一个属性中,这个Bean就是内部bean。缺点是,它不能重复使用其余地方。
复制代码