分享
分销 收藏 举报 申诉 / 23
播放页_导航下方通栏广告

类型java中三大框架和综合项目模拟面试题目.doc

  • 上传人:a199****6536
  • 文档编号:2993116
  • 上传时间:2024-06-12
  • 格式:DOC
  • 页数:23
  • 大小:141.54KB
  • 下载积分:10 金币
  • 播放页_非在线预览资源立即下载上方广告
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    java 中三大 框架 综合 项目 模拟 面试 题目
    资源描述:
    框架和项目模仿面试题目 -------- 于洋 整顿 1. Struts2 框架题目 1.1. struts2 工作流程 Struts 2框架自身大体可以分为3个某些: 核心控制器FilterDispatcher、业务控制器Action和顾客实现公司业务逻辑组件。 核心控制器FilterDispatcher是Struts 2框架基本, 包括了框架内部控制流程和解决机制。 业务控制器Action和业务逻辑组件是需要顾客来自己实现。 顾客在开发Action和业务逻辑组件同步,还需要编写有关配备文献, 供核心控制器FilterDispatcher来使用。 Struts 2工作流程相对于Struts 1要简朴,与WebWork框架基本相似, 因此说Struts 2是WebWork升级版本。基本简要流程如下: 1 、客户端初始化一种指向Servlet容器祈求; 2、这个祈求通过一系列过滤器(Filter) (这些过滤器中有一种叫做ActionContextCleanUp可选过滤器, 这个过滤器对于Struts2和其她框架集成很有协助,例如:SiteMesh Plugin) 3 、接着FilterDispatcher被调用, FilterDispatcher询问ActionMapper来决定这个请与否需要调用某个Action 4、如果ActionMapper决定需要调用某个Action, FilterDispatcher把祈求解决交给ActionProxy 5、ActionProxy通过Configuration Manager询问框架配备文献, 找到需要调用Action类 6、ActionProxy创立一种ActionInvocation实例。 7、ActionInvocation实例使用命名模式来调用, 在调用Action过程先后,涉及到有关拦截器(Intercepter)调用。 8、一旦Action执行完毕,ActionInvocation负责依照struts.xml中配备找到相应返回成果 。返回成果普通是(但不总是,也可 能是此外一种Action链)一种需要被表达JSP或者FreeMarker模版。 在表达过程中可以使用Struts2 框架中继承标签。 在这个过程中需要涉及到ActionMapper 9、响应返回是通过咱们在web.xml中配备过滤器 10、如果ActionContextCleanUp是当前使用,则FilterDispatecher将不会清理sreadlocal ActionContext;如果ActionContextCleanUp不使用,则将会去清理sreadlocals。 1.2. 过滤器Filter和struts2拦截器区别 1、拦截器是基于java反射机制,而过滤器是基于函数回调。 2、过滤器依赖于servlet容器,而拦截器不依赖于servlet容器。 3、拦截器只能对Action祈求起作用,而过滤器则可以对几乎所有祈求起作用。 4、拦截器可以访问Action上下文、值栈里对象,而过滤器不能。 1.3. 为什么要使用struts2框架 Struts2 是一种相称强大Java Web开源框架,是一种基于POJOActionMVC Web框架。它基于当年Webwork和XWork框架,继承其长处,同步做了相称改进。 1.Struts2基于MVC架构,框架构造清晰,开发流程一目了然,开发人员可以较好掌控开发过程。 2使用OGNL进行参数传递。 OGNL提供了在Struts2里访问各种作用域中数据简朴方式,你可以以便获取Request,Attribute,Application,Session,Parameters中数据。大大简化了开发人员在获取这些数据时代码量。 3强大拦截器 Struts2 拦截器是一种Action级别AOP,Struts2中许多特性都是通过拦截器来实现,例如异常解决,文献上传,验证等。拦截器是可配备与重用,可以将某些通用功能如:登录验证,权限验证等置于拦截器中以完毕某些Java Web项目中比较通用功能。在我实现一Web项目中,就是使用Struts2拦截器来完毕了系统中权限验证功能。 4易于测试 Struts2Action都是简朴POJO,这样可以以便对Struts2Action编写测试用例,大大以便了5Java Web项目测试。 易于扩展插件机制在Struts2添加扩展是一件高兴而轻松事情,只需要将所需要Jar包放到WEB-INF/lib文献夹中,在struts.xml中作某些简朴设立就可以实现扩展。 6模块化管理 Struts2已经把模块化作为了体系架构中基本思想,可以通过三种办法来将应用程序模块化:将配备信息拆提成各种文献把自包括应用模块创立为插件创立新框架特性,即将与特定应用无关新功能组织成插件,以添加到各种应用中去。 7全局成果与声明式异常 为应用程序添加全局Result,和在配备文献中对异常进行解决,这样当解决过程中浮现指定异常时,可以跳转到特定页面。 她如此之多长处,是诸多人比较青睐,与spring ,Hibernate进行结合,构成了当前比较流行ssh框架,固然每个公司都要自己框架,也是ssh变异产品。 1.4. struts2 有哪些长处 1)在软件设计上Struts2应用可以不依赖于Servlet API和struts API。 Struts2这种设计属于无侵入式设计;   2)拦截器,实现如参数拦截注入等功能;   3)类型转换器,可以把特殊祈求参数转换成需要类型;   4)各种体现层技术,如:JSP、freeMarker、Velocity等;   5)Struts2输入校验可以对指定某个办法进行校验;   6)提供了全局范畴、包范畴和Action范畴国际化资源文献管理实现  1.5. struts2 框架核心控制器是什么?它有什么作用? 1)Struts2框架核心控制器是StrutsPrepareAndExecuteFilter。   2)作用:    负责拦截由<url-pattern>/*</url-pattern>指定所有顾客祈求,当顾客祈求到达时,该Filter会过滤顾客祈求。默认状况下,如果顾客祈求途径   不带后缀或者后缀以.action结尾,这时祈求将被转入struts2框架解决,否则struts2框架将略过该祈求解决。   可以通过常量"struts.action.extension"修改action后缀,如:   <constant name="struts.action.extension" value="do"/>   如果顾客需要指定各种祈求后缀,则各种后缀之间以英文逗号(,)隔开。 <constant name="struts.action.extension" value="do,go"/>   1.6. struts2配备文献加载顺序 struts2 core 核心包 org/apache/struts2/default.properties (定义Struts2 常量) struts2 core 核心包 struts-default.xml (定义struts2 默认 package 、拦截器、成果类型) struts2 plugin 插件包 struts-plugin.xml(定义struts2 插件配备) struts.xml (自定义struts2 配备文献) struts.properties (自定义struts2 常量文献) web.xml 中定义struts2 常量 1.7. struts2 如何访问HttpServletRequest、HttpSession、ServletContext 三个域对象? 方案一:   HttpServletRequest request =ServletActionContext.getRequest();   HttpServletResponse response =ServletActionContext.getResponse();   HttpSession  session=   request.getSession();  ServletContext servletContext=ServletActionContext.getServletContext();        方案二:   类 implements ServletRequestAware,ServletResponseAware,SessionAware,ServletContextAware   注意:框架自动传入相应域对象  ps:ActionContext.getContext() 可以获得三个Map对象,间接对三个域对象中数据进行操作 1.8. struts2如何对指定办法进行验证? 1)validate()办法会校验action中所有与execute办法签名相似办法; 2)要校验指定办法通过重写validateXxx()办法实现, validateXxx()只会校验action中办法名为Xxx办法。其中Xxx第一种字母要大写; 3)当某个数据校验失败时,调用addFieldError()办法往系统fieldErrors添加校验失败信息(为了使用addFieldError()办法,action可以继承ActionSupport), 如果系统 fieldErrors包括失败信息,struts2会将祈求转发到名为inputresult; 4)在input视图中可以通过<s:fielderror/>显示失败信息。 5)先执行validateXxxx()->validate()->如果出错了,会转发<result name="input"/>所指定页面,如果不出错,会直接进行Action::execute()办法 1.9. struts2 默认能解决get和post乱码问题吗 不能。struts.i18n.encoding=UTF-8属性值只能解析POST提交下乱码问题。 1.10. 请说出struts2中至少5个默认拦截器 fileUpload 提供文献上传功能 i18n 记录顾客选取locale cookies 使用配备name,value来是指cookies checkbox 添加了checkbox自动解决代码,将没有选中checkbox内容设定为false,而html默认状况下不提交没有选中checkbox。 chain 让前一种Action属性可以被后一种Action访问,当前和chain类型result()结合使用。 params 将祈求参数封装到Struts2 Action中 validate 执行struts2 祈求参数校验 workflow 判断流程中与否存在FieldError ,如果存在,跳转到input对象视图 modelDriven 将struts2 Action 实现ModelDriven 接口提供model对象压入root栈顶部 token 防止页面表单重复提交 1.11. 值栈ValueStack原理和生命周期 1)ValueStack贯穿整个 Action 生命周期,保存在request域中,因此ValueStack和request生命周期同样。当Struts2接受一种祈求时,会迅速创立ActionContext,   ValueStack,action。然后把action存储进ValueStack,因此action实例变量可以被OGNL访问。 祈求来时候,action、ValueStack生命开始,祈求结束,action、    ValueStack生命结束;   2)action是多例,和Servlet不同样,Servelt是单例;   3)每个action均有一种相应值栈,值栈存储数据类型是该action实例,以及该action中实例变量,Action对象默认保存在栈顶;   4)ValueStack本质上就是一种ArrayList;   5)关于ContextMap,Struts 会把下面这些映射压入 ContextMap 中:   parameters  :   该 Map 中包括当前祈求祈求参数   request     :   该 Map 中包括当前 request 对象中所有属性  session :该 Map 中包括当前 session 对象中所有属性   application :该 Map 中包括当前 application 对象中所有属性   attr:该 Map 按如下顺序来检索某个属性: request, session, application            6)使用OGNL访问值栈内容时,不需要#号,而访问request、session、application、attr时,需要加#号;   7)注意: Struts2中,OGNL表达式需要配合Struts标签才可以使用。如:<s:property value="name"/>   8)在struts2配备文献中引用ognl表达式 ,引用值栈值 ,此时使用"$",而不是#或者%;   1.12. ActionContext、ServletContext、pageContext区别? 1)ActionContext是当前Action上下文环境,通过ActionContext可以获取到request、session、ServletContext等与Action关于对象引用; 2)ServletContext是域对象,一种web应用中只有一种ServletContext,生命周期随着整个web应用; 3)pageContext是JSP中最重要一种内置对象,可以通过pageContext获取其她域对象应用,同步它是一种域对象,作用范畴只针对当前页面,当前页面结束时,pageContext销毁, 生命周期是JSP四个域对象中最小。 1.13. resultype属性中有哪些成果类型? dispatcher struts默认成果类型,把控制权转发给应用程序里某个资源不能把控制权转发给一种外部资源,若需要把控制权重定向到一种外部资源,应当使用 redirect 把响应重定向到另一种资源(涉及一种外部资源) redirectAction 把响应重定向到另一种 Action freemarker、velocity、chain、httpheader、xslt、plainText、stream struts2-json-plugin 自定义 json 成果类型,用于返回json格式数据 1.14. 拦截器生命周期与工作过程 1)每个拦截器都是实现了Interceptor接口 Java 类; 2)init():该办法将在拦截器被创立后及时被调用,它在拦截器生命周期内只被调用一次. 可以在该办法中对有关资源进行必要初始化; 3)intercept(ActionInvocation invocation):每拦截一种动作祈求,该办法就会被调用一次; 4)destroy:该办法将在拦截器被销毁之前被调用,它在拦截器生命周期内也只被调用一次; 2. Hibernate3 框架题目 2.1. 为什么要使用Hibernate框架?它有什么优势? ² Hibernate对JDBC访问数据库代码做了封装,大大简化了数据访问层繁琐重复性代码。 ² Hibernate是一种基于JDBC主流持久化框架,是一种先进ORM实现,它很大限度简化了DAO层编码工作。 ² Hibernate使用Java反射机制,而不是字节码增强程序类实现透明性。 ² 由于它是一种轻量级框架。映射灵活性很出众。它支持诸多关系型数据库,从一对一到多对多各种复杂关系。 2.2. Hibernate工作原理(编程环节) 1.读取并解析Hibernate核心配备文献hibernate.cfg.xml 2.读取并解析Hibernate映射文献,创立SessionFactory 3.打开Sesssion yantingxin 4.创立事务Transation 5.持久化操作 6.提交事务 7.关闭Session 8.关闭SesstionFactory 2.3. Hibernate是如何实现延迟加载? 延迟加载机制是为了避免某些无谓性能开销而提出来,所谓延迟加载就是当在真正需要数据时候,才真正执行数据加载操作。在Hibernate中提供了对实体对象延迟加载、对集合延迟加载和对属性延迟加载。 当Hibernate在查询数据时候,数据并没有存储在内存中,只是使用Javassist为目的类创立子类代理对象,当程序真正对数据进行操作时,代理对象handler才去访问数据,加载对象存在于内存中,这就实现了延迟加载,它节约了服务器内存开销,从而提高了服务器性能。 2.4. Hibernate 有那几种查询方式 (1) 导航对象图查询 (2) OID查询 (3) HQL查询 (4) QBC查询 (5) 本地SQL查询 2.5. Hibernate中load办法和get办法区别 区别1:如果数据库中没有userId相应记录,通过get办法加载,则返回是null值;如果通过load办法加载,则返回一种代理对象,当通过user对象调用某个办法(例如user.getPassword())时,会抛出异常:org.hibernate.ObjectNotFoundException; 区别2:load支持延迟加载,get不支持延迟加载。 2.6. Hibernate持久化对象有几种状态? 暂时状态、游离状态、持久化状态 2.7. HQL和SQL语句区别? HQL面向对象,而SQL操纵关系型数据库 2.8. 说下Hibernate缓存机制 缓存是介于应用程序和物理数据源之间,其作用是为了减少应用程序对物理数据源访问频次,从而提高了应用运营性能。 Hibernate缓存涉及Session缓存和SessionFactory缓存,其中SessionFactory缓存又可以分为两类:内置缓存和外置缓存。Session缓存是内置,不能被卸载,也被称为Hibernate第一级缓存。SessionFactory内置缓存和Session缓存在实现方式上比较相似,前者是SessionFactory对象某些集合属性包括数据,后者是指Session某些集合属性包括数据。SessionFactory内置缓存中存储了映射元数据和预定义SQL语句,映射元数据是映射文献中数据拷贝,而预定义SQL语句是在Hibernate初始化阶段依照映射元数据推导出来,SessionFactory内置缓存是只读,应用程序不能修改缓存中映射元数据和预定义SQL语句,因而SessionFactory不需要进行内置缓存与映射文献同步。SessionFactory外置缓存是一种可配备插件。在默认状况下,SessionFactory不会启用这个插件。外置缓存数据是数据库数据拷贝,外置缓存介质可以是内存或者硬盘。SessionFactory外置缓存也被称为Hibernate第二级缓存。 2.9. 如何优化Hibernate? 初用HIBERNATE人也许都遇到过性能问题,实现同一功能,用HIBERNATE与用JDBC性能相差十几倍很正常,如果不及早调节,很也许影响整个项目进度。 大体上,对于HIBERNATE性能调优重要考虑点如下:   Ø 数据库设计调节   Ø HQL优化   Ø API对的使用(如依照不同业务类型选用不同集合及查询API)   Ø 主配备参数(日记,查询缓存,fetch_size,batch_size等)   Ø 映射文献优化(ID生成方略,二级缓存,延迟加载,关联优化)   Ø 一级缓存管理   Ø 针对二级缓存,尚有许多特有方略   Ø 事务控制方略。 1、数据库设计   a) 减少关联复杂性   b) 尽量不使用联合主键   c) ID生成机制,不同数据库所提供机制并不完全同样   d) 恰当冗余数据,但是分追求高范式 2、HQL优化   HQL如果抛开它同HIBERNATE自身某些缓存机制关联,HQL优化技巧同普通SQL优化技巧同样,可以很容易在网上找到某些经验之谈。 在性能瓶颈地方使用硬编码 JDBC。 3、主配备   a) 查询缓存,同下面讲缓存不太同样,它是针对HQL语句缓存,即完全同样语句再次执行时可以运用缓存数据。但是,查询缓存在一种交易系统(数据变更频繁,查询条件相似机率并不大)中也许会起反作用:它会白白耗费大量系统资源但却难以派上用场。   b) fetch_size,同JDBC有关参数作用类似,参数并不是越大越好,而应依照业务特性去设立   c) batch_size同上。   d) 生产系统中,牢记要关掉SQL语句打印。 4、缓存   a) 数据库级缓存:这级缓存是最高效和安全,但不同数据库可管理层次并不同样,例如,在ORACLE中,可以在建表时指定将整个表置于缓存当中。   b) SESSION缓存:在一种HIBERNATE SESSION有效,这级缓存可干预性不强,大多于HIBERNATE自动管理,但它提供清除缓存办法,这在大批量增长/更新操作是有效。例如,同步增长十万条记录,按常规方式进行,很也许会发现OutofMemeroy异常,这时也许需要手动清除这一级缓存:Session.evict以及Session.clear   c) 应用缓存:在一种SESSIONFACTORY中有效,因而也是优化重中之重,因而,各类方略也考虑较多,在将数据放入这一级缓存之前,需要考虑某些前提条件:   i. 数据不会被第三方修改(例如,与否有另一种应用也在修改这些数据?)   ii. 数据不会太大   iii. 数据不会频繁更新(否则使用CACHE也许适得其反)   iv. 数据会被频繁查询   v. 数据不是核心数据(如涉及钱,安全等方面问题)。   缓存有几种形式,可以在映射文献中配备:read-only(只读,合用于很少变更静态数据/历史数据),nonstrict-read-write,read-write(比较普遍形式,效率普通),transactional(JTA中,且支持缓存产品较少)   d) 分布式缓存:同c)配备同样,只是缓存产品选用不同,在当前HIBERNATE中可供选取不多,oscache,jboss cache,当前大多数项目,对它们用于集群使用(特别是核心交易系统)都持保守态度。在集群环境中,只运用数据库级缓存是最安全。 5、延迟加载   a) 实体延迟加载:通过使用动态代理实现   b) 集合延迟加载:通过实现自有SET/LIST,HIBERNATE提供了这方面支持   c) 属性延迟加载: 6、办法选用   a) 完毕同样一件事,HIBERNATE提供了可供选取某些方式,但详细使用什么方式,也许用性能/代码都会有影响。显示,一次返回十万条记录(List/Set/Bag/Map等)进行解决,很也许导致内存不够问题,而如果用基于游标(ScrollableResults)或Iterator成果集,则不存在这样问题。   b) Sessionload/get办法,前者会使用二级缓存,而后者则不使用。   c) Query和list/iterator,如果去仔细研究一下它们,你也许会发现诸多故意思状况,两者重要区别(如果使用了Spring,在HibernateTemplate中相应find,iterator办法):   i. list只能运用查询缓存(但在交易系统中查询缓存作用不大),无法运用二级缓存中单个实体,但list查出对象会写入二级缓存,但它普通只生成较少执行SQL语句,诸多状况就是一条(无关联)。   ii. iterator则可以运用二级缓存,对于一条查询语句,它会先从数据库中找出所有符合条件记录ID,再通过ID去缓存找,对于缓存中没有记录,再构造语句从数据库中查出,因而很容易懂得,如果缓存中没有任何符合条件记录,使用iterator会产生N+1条SQL语句(N为符合条件记录数)   iii. 通过iterator,配合缓存管理API,在海量数据查询中可以较好解决内存问题,如:   while(it.hasNext()){   YouObject object = (YouObject)it.next();   session.evict(youObject);   sessionFactory.evice(YouObject.class,youObject.getId());   }   如果用list办法,很也许就出OutofMemory错误了。   iv. 通过上面阐明,我想你应当懂得如何去使用这两个办法了。 7、集合选用   在HIBERNATE 3.6文档“21.5理解集合性能”中有详细阐明。 ² ists,maps 和 sets 用于更新效率最高 ² Bag 和 list 是反向集合类中效率最高 ² 一次性删除(One shot delete) 8、事务控制   事务方面对性能有影响重要涉及:事务方式选用,事务隔离级别以及锁选用   a) 事务方式选用:如果不涉及各种事务管理器事务话,不需要使用JTA,只有JDBC事务控制就可以。   b) 事务隔离级别:参见原则SQL事务隔离级别   c) 锁选用:悲观锁(普通由详细事务管理器实现),对于长事务效率低,但安全。乐观锁(普通在应用级别实现),如在HIBERNATE中可以定义VERSION字段,显然,如果有各种应用操作数据,且这些应用不是用同一种乐观锁机制,则乐观锁会失效。因而,针对不同数据应有不同方略,同前面许多状况同样,诸多时候咱们是在效率与安全/精确性上找一种平衡点,无论如何,优化都不是一种纯技术问题,你应当对你应用和业务特性有足够理解。 9、批量操作   虽然是使用JDBC,在进行大批数据更新时,BATCH与不使用BATCH有效率上也有很大差别。咱们可以通过设立batch_size来让其支持批量操作。   举个例子,要批量删除某表中对象,如“delete Account”,打出来语句,会发现HIBERNATE找出了所有ACCOUNTID,再进行删除,这重要是为了维护二级缓存,这样效率必定高不了,在后续版本中增长了bulk delete/update,但这也无法解决缓存维护问题。也就是说,由于有了二级缓存维护问题,HIBERNATE批量操作效率并不尽如人意!   从前面许多要点可以看出,诸多时候咱们是在效率与安全/准 确性上找一种平衡点,无论如何,优化都不是一种纯技术问题,你应当对你应用和业务特性有足够理解,普通,优化方案应在架构设计期就基本拟定,否则 也许导致没必要返工,致使项目延期,而作为架构师和项目经理,还要面对开发人员也许抱怨,必竟,咱们对顾客需求更改控制力不大,但技术/架构风险是应当在初期意识到并制定好有关对策。   尚有一点要注意,应用层缓存只是锦上添花,永远不要把它当救命稻草,应用根基(数据库设计,算法,高效操作语句,恰当API选取等)才是最重要。 2.10. 如何解决关联数据延迟加载NoSession问题 ² 在拟定关联数据是必要时,可以配备 lazy=false 使用及时加载方略 ² 使用OpenSessionInView 模式,在需要数据时,才去加载 ² 在程序中,依照业务需要,手动Hibernate.initialize() 手动初始化延迟加载数据 2.11. Hibernate sessionfactory 和 session 区别是什么?如何解决 session 线程不安全问题? sessionfactory 是一种数据源相应着一种 sessionfactory,也就说她是属于二级缓存,如果是 集群环境,她可以动态配备使用这个数据源或者 不使用这个数据源,session 是等于一次回话,也就是说是一级缓存,并且是由 sessionfactory 创立,再有 sessionfactory 是线程安全,相反 session 不安全; 解决 session 不安全问题,就是人们通惯用常规写法,一次会话后关闭 session,避免 session 重用; 2.12. Hibernate 如何实现动态查询?DetachedCriteria 与 Criteria 区别是什么? 条件查询呗,编程方式代替 HQL 语句,DetachedCriteria 单词很简要了,Detached 是分离, 分离,分离什么,固然是业务层应用,原本Criteria 是与 session 绑定,当前用DetachedCriteria这个来分离。 3. Spring3 框架题目 3.1. Spring框架长处 ² 以便解耦,简化开发 n Spring就是一种大工厂,可以将所有对象创立和依赖关系维护,交给Spring管理 ² AOP编程支持 n Spring提供面向切面编程,可以以便实现对程序进行权限拦截、运营监控等功能 ² 声明式事务支持 n 只需要通过配备就可以完毕对事务管理,而无需手动编程 ² 以便程序测试 n Spring对Junit4支持,可以通过注解以便测试Spring程序 ² 以便集成各种先进框架 n Spring不排斥各种先进开源框架,其内部提供了对各种先进框架(如:Struts、Hibernate、MyBatis、Quartz等)直接支持 ² 减少JavaEE API使用难度 n Spring 对JavaEE开发中非常难用某些API(JDBC、JavaMail、远程调用等),都提供了封装,使这些API应用难度大大减少 3.2. 谈谈你理解IoC和DI IOC是Inversion of Control缩写,控制反转,简朴来说就是把复杂系统分解成互相合伙对象,借助于“第三方”实现具备依赖关系对象之间解耦。 这里第三方 就是指Ioc容器(Spring 框架),所有对象创立权,都交由Spring管理。 DI浮现,是对IoC更近一步分析,既然IOC是控制反转,那么究竟是“哪些方面控制被反转了呢?通过详细地分析和论证后,她得出了答案:“获得依赖对象过程被反转了”。控制被反转之后,获得依赖对象过程由自身管理变为了由IOC容器积极注入。 依赖注入(DI)和控制反转(IOC)是从不同角度描述同一件事情,就是指通过引入IOC容器,运用依赖关系注入方式,实现对象之间解耦。 3.3. Spring中BeanFactory和ApplicationContext 作用和区别? 作用: 1. BeanFactory负责读取bean配备文档,管理bean加载,实例化,维护bean之间依赖关系,负责bean声明周期。 2. ApplicationContext除了提供上述BeanFactory所能提供功能之外,还提供了更完整框架功能: a. 国际化支持 b. 资源访问:Resource rs = ctx. getResource(”classpath:config.properties”),“file:c:/config.properties” c. 事件传递:通过实现ApplicationContextAware接口 3.4. Spring 中有几种事务管理? 编程式事务管理,通过TransactionTemplate 实现 声明式事务管理,基于AOP 切面编程实现 ,无需编码,灵活性更高 3.5. Spring Bean作用域 在spring2.0之前bean只有2种作用域即:singleton(单例)、non-singleton(也称 prototype),Spring2.0后来,增长了session、request、global session三种专用于Web应用程序上下文Bean。因而,默认状况下Spring2.0当前有五种类型Bean。 1、singleton作用域 当一种bean作用域设立为singleton,那么Spring IOC容器中只会存在一种共享bean实例,并且所有对bean祈求,只要id与该bean定义相匹配,则只会返回bean同一实例。换言之,当把一种bean定义设立为singleton作用域时,Spring IOC容器只会创立该bean定义唯一实例。这个单一实例会被存储到单例缓存(singleton cache)中,并且所有针对该bean后续祈求和引用都将返回被缓存对象实例,这里要注意是singleton作用域和GOF设计模式中单例是完全不同,单例设计模式表达一种ClassLoader中只有一种class存在,而这里singleton则表达一种容器相应一种bean,也就是说当一种bean被标记为singleton时候,springIOC容器中只会存在一种该bean。 2、prototype prototype作用域布置bean,每一次祈求(将其注入到另一种bean中,或者以程序方式调用容器getBean()办法)都会产生一种新bean实例,相称于一种new操作,对于prototype作用域bean,有一点非常重要,那就是Spring不能对一种 prototype bean整个生命周期负责,容器在初始化、配备、装饰或者是装配完一种prototype实例后,将它交给客户端,随后就对该prototype实例不闻不问了。不论何种作用域,容器都会调用所有对象初始化生命周期回调办法,而对prototype而言,任何配备好析构生命周期回调办法都将不会被调用。 3.6. Spring使用属性注入方式 两种依赖注入类型分别是setter注入和构造办法注入。 setter注入: 普通状况下所有java bean,咱们都会使用setter办法和getter办法去设立和获取属性值。 构造办法注入:使用带参数构造办法 3.7. Spring配备文献applicationContext.xml 能不能改名 ContextLoaderListener是一种ServletContextListener,它在你web应用启动时候初始化。缺省状况下, 它会在WEB-INF/applicationContext.xml文献找Spring配备。 你可以通过定义一种<context-param>元素名字为”contextConfigLocation”来变化Spring配备文献位置。 <context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/itcast.xml</param-value> </context-param> 3.8. Spring声明式事务如何实现? 使用内置 Transa
    展开阅读全文
    提示  咨信网温馨提示:
    1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
    2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
    3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
    4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
    5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
    6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

    开通VIP折扣优惠下载文档

    自信AI创作助手
    关于本文
    本文标题:java中三大框架和综合项目模拟面试题目.doc
    链接地址:https://www.zixin.com.cn/doc/2993116.html
    页脚通栏广告

    Copyright ©2010-2026   All Rights Reserved  宁波自信网络信息技术有限公司 版权所有   |  客服电话:0574-28810668    微信客服:咨信网客服    投诉电话:18658249818   

    违法和不良信息举报邮箱:help@zixin.com.cn    文档合作和网站合作邮箱:fuwu@zixin.com.cn    意见反馈和侵权处理邮箱:1219186828@qq.com   | 证照中心

    12321jubao.png12321网络举报中心 电话:010-12321  jubao.png中国互联网举报中心 电话:12377   gongan.png浙公网安备33021202000488号  icp.png浙ICP备2021020529号-1 浙B2-20240490   


    关注我们 :微信公众号  抖音  微博  LOFTER               

    自信网络  |  ZixinNetwork