三大框架面试题

上传人:mg****85 文档编号:34176106 上传时间:2018-02-21 格式:DOCX 页数:10 大小:25.56KB
返回 下载 相关 举报
三大框架面试题_第1页
第1页 / 共10页
三大框架面试题_第2页
第2页 / 共10页
三大框架面试题_第3页
第3页 / 共10页
三大框架面试题_第4页
第4页 / 共10页
三大框架面试题_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《三大框架面试题》由会员分享,可在线阅读,更多相关《三大框架面试题(10页珍藏版)》请在金锄头文库上搜索。

1、1.Spring 中 Bean 的生命周期1.容器启动,实例化所有实现了 BeanFactoyPostProcessor 接口的类。他会在任何普通 Bean实例化之前加载.2.实例化剩下的 Bean,对这些 Bean 进行依赖注入。3.如果 Bean 有实现 BeanNameAware 的接口那么对这些 Bean 进行调用4.如果 Bean 有实现 BeanFactoryAware 接口的那么对这些 Bean 进行调用5.如果 Bean 有实现 ApplicationContextAware 接口的那么对这些 Bean 进行调用6.如果配置有实现 BeanPostProcessor 的 Bea

2、n,那么调用它的 postProcessBeforeInitialization方法7.如果 Bean 有实现 InitializingBean 接口那么对这些 Bean 进行调用8.如果 Bean 配置有 init 属性,那么调用它属性中设置的方法9.如果配置有实现 BeanPostProcessor 的 Bean,那么调用它的 postProcessAfterInitialization方法10.Bean 正常使用11.调用 DisposableBean 接口的 destory 方法12.调用 Bean 定义的 destory 方法如果从大体上区分值分只为四个阶段1.BeanFactoyP

3、ostProcessor 实例化2.Bean 实例化,然后通过某些 BeanFactoyPostProcessor 来进行依赖注入3.BeanPostProcessor 的调用.Spring 内置的 BeanPostProcessor 负责调用 Bean 实现的接口: BeanNameAware, BeanFactoryAware, ApplicationContextAware 等等,等这些内置的BeanPostProcessor 调用完后才会调用自己配置的 BeanPostProcessor4.Bean 销毁阶段2.你对 spring 的理解是什么?1)开源框架2)IoC(控制反转), 将

4、类的创建和依赖关系写在配置文件里,由配置文件注入,实现了松耦合3)AOP 将安全,事务等于程序逻辑相对独立的功能抽取出来,利用 spring 的配置文件将这些功能插进去,实现了按照方面编程,提高了复用性或者答概念 Spring 是一个轻型容器(light-weight container),其核心是 Bean 工厂(Bean Factory),用以构造我们所需要的 M(Model)。在此基础之上, Spring 提供了 AOP(Aspect-Oriented Programming, 面向层面的编程)的实现,用它来提供非管理环境下申明方式的事务、安全等服务;对 Bean 工厂的扩展 Appli

5、cationContext 更加方便我们实现 J2EE 的应用;DAO/ORM 的实现方便我们进行数据库的开发;Web MVC 和 Spring Web 提供了 Java Web 应用的框架或与其他流行的 Web 框架进行集成。3.Spring 框架有哪几部分组成?Spring 核心容器(Core):提供 Spring 框架的基本功能。核心容器的主要组件是BeanFactory,她是工厂模式的实现。BeanFactory 使用控制反转(Ioc )模式将应用程序的配置和依赖性规范与实际的应用代码程序分开。Spring AOP:通过配置管理特性,Spring AOP 模块直接面向方面的编程功能集成

6、到了 Spring框架中,所以可以很容易的使 Spring 框架管理的任何对象支持 AOP。Spring AOP 模块为基于 Spring 的应用程序中的对象提供了事务管理服务。通过使用 Spring AOP,不用依赖于 EJB组件,就可以将声明性事务管理集成到应用程序中。Spring ORM:Spring 框架集成了若干 ORM 框架,从而提供了 ORM 的对象关系工具,其中包括 JDO、Hibernate、iBatis 和 TopLink。所有这些都遵从 Spring 的通用事务和 DAO 异常层结构。Spring DAO:JDBC DAO 抽象层提供了有意义的异常层次的结构,可用该结构来

7、管理异常处理和不同数据供应商抛出的异常错误信息。异常层次结构简化了错误处理,并且大大的降低 了需要编写的异常代码数量(例如,打开和关系连接)。Spring DAO 的面向 JDBC 的异常遵从通用的 DAO 异常层结构。Spring WEB:Web 上下文模块建立在上下文模块( Context)的基础之上,为基于 Web 服务的应用程序提供了上下文的服务。所以 Spring 框架支持 Jakarta Struts 的集成。Web 模块还简化了处理多部分请求及将请求参数绑定到域对象的工作。Spring 上下文( Context):Spring 上下文是一个配置文件,向 Spring 框架提供上下

8、文信息。Spring 上下文包括企业服务,例如 JNDI、EJB、电子邮件、国际化校验和调度功能。Spring MVC:Spring 的 MVC 框架是一个全功能的构建 Web 应用程序的 MVC 实现。通过策略接口,MVC 框架变成为高度可配置的, MVC 容纳的大量视图技术,包括JSP、Velocity、Tiles、iText 和 Pol4.Struts2 基本工作过程1、客户端初始化一个指向 Servlet 容器(例如 Tomcat)的请求2、这个请求经过一系列的过滤器(Filter )(这些过滤器中有一个叫做ActionContextCleanUp 的可选过滤器,这个过滤器对于 Str

9、uts2 和其他框架的集成很有帮助,例如:SiteMesh Plugin);3、接着 StrutsPrepareAndExecuteFilter 被调用,StrutsPrepareAndExecuteFilter 询问ActionMapper 来决定这个请求是否需要调用某个 Action;4、如果 ActionMapper 决定需要调用某个 Action,StrutsPrepareAndExecuteFilter 把请求的处理交给 ActionProxy;5、 ActionProxy 通过 ConfigurationManager 询问框架的配置文件,找到需要调用的 Action 类;6、 A

10、ctionProxy 创建一个 ActionInvocation 的实例。7、 ActionInvocation 实例使用命名模式来调用,在调用 Action 的过程前后,涉及到相关拦截器(Intercepter)的调用。8、一旦 Action 执行完毕,ActionInvocation 负责根据 struts.xml 中的配置找到对应的返回结果。返回结果通常是(但不总是,也可能是另外的一个 Action 链)一个需要被表示的 JSP或者 FreeMarker 的模版。在表示的过程中可以使用 Struts2 框架中继承的标签。在这个过程中需要涉及到 ActionMapper。5.IOC 的优点

11、是什么?IOC 或 依赖注入把应用的代码量降到最低。它使应用容易测试,单元测试不再需要单例和 JNDI 查找机制。最小的代价和最小的侵入性使松散耦合得以实现。IOC 容器支持加载服务时的饿汉式初始化和懒加载。6.什么是 Spring beans?Spring beans 是那些形成 Spring 应用的主干的 java 对象。它们被 Spring IOC 容器初始化,装配,和管理。这些 beans 通过容器中配置的元数据创建。比如,以 XML 文件中 的形式定义。Spring 框架定义的 beans 都是单件 beans。在 bean tag 中有个属性”singleton”,如果它被赋为 T

12、RUE,bean 就是单件,否则就是一个 prototype bean。默认是 TRUE,所以所有在 Spring框架中的 beans 缺省都是单件。7.什么是 Spring 的 MVC 框架Spring 配备构建 Web 应用的全功能 MVC 框架。Spring 可以很便捷地和其他 MVC 框架集成,如 Struts,Spring 的 MVC 框架用控制反转把业务对象和控制逻辑清晰地隔离。它也允许以声明的方式把请求参数和业务对象绑定。8.spring 提供了几个关于事务处理的类TransactionDefinition /事务属性定义TranscationStatus /代表了当前的事务,可

13、以提交,回滚。PlatformTransactionManager 这个是 spring 提供的用于管理事务的基础接口,其下有一个实现的抽象类 AbstractPlatformTransactionManager,我们使用的事务管理类例如DataSourceTransactionManager 等都是这个类的子类。9.谈谈 ValueStack. ValueStack 贯穿整个 Action 的生命周期,保存在 request 域中,所以 ValueStack 和 request 的生命周期一样. 当 Struts2 接受一个请求时,会迅速创建 ActionContext, ValueStac

14、k,Action. 然后把 Action 存放进 ValueStack,所以 Action 的实例变量可以被 OGNL 访问。请求来的时候,Action、ValueStack 的生命开始;请求结束,Action、 ValueStack 的生命结束. 值栈是多实例的,因为 Action 是多例的(和 Servlet 不一样,Servelt 是单例的),而每个 Action 都有一个对应的值栈,Action 对象默认保存在栈顶;. ValueStack 本质上就是一个 ArrayList(查看源代码得到 );. 使用 OGNL 访问值栈的内容时,不需要#号,而访问 request、session、

15、application、attr 时,需要加#号;. Struts2 重写了 request 的 getAttribute 方法,所以可以使用 EL 直接访问值栈中的内容10.拦截器的生命周期与工作过程每个拦截器都是需要实现 Interceptor 接口 init():在拦截器被创建后立即被调用, 它在拦截器的生命周期内只被调用一次. 可以在该方法中对相关资源进行必要的初始化; intercept(ActionInvocation invocation):每拦截一个动作请求,该方法就会被调用一次; destroy:该方法将在拦截器被销毁之前被调用, 它在拦截器的生命周期内也只被调用一次;11.

16、拦截器必须是无状态的这是因为 struts2 对每一个 Action 的请求使用的是同一个拦截器实例来拦截调用,如果拦截器有状态,在多个线程(客户端的每个请求将由服务器端的一个线程来服务) 同时访问一个拦截器实例的情况下,拦截器的状态将不可预测。12.自定义拦截器的实现方法实现 Interceptor 接口继承 AbstractInterceptor 类继承 MethodFilterInterceptor 类13.Spring 容器容器可以管理对象的生命周期,对象与对象之间的依赖关系,您可以使用一个配置文件(通常是 XML),在上面定义好对象的名称,如何产生 (Prototype 方式或 Singleton方式),那个对象产生之后必须设定成为某个对象的属性等,在启动容器后,所有的对象都可以直接取用,不用编写任何一行代码来产生对象,或是建立对象与对象之间的依赖关系。14.为何使用 IoC有效地组织中间层对象有效的消除单例、工厂等模式的使用将面向接口编程做到实处使单元测试变得简单消除了依赖环境的查找和特定服务器的

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号