一、Spring基础知识及IOC_选择题
1. 下面关于spring描述错误的是:(C )
A Spring支持可插入的事务管理器,使事务划分更轻松,同时无需处理底层的问题。
B Spring事务管理的通用抽象层还包括JTA策略和一个JDBC DataSource。
C 与JTA或EJB CMT一样,Spring的事务支持依赖于Java EE环境。
D Spring事务语义通过AOP应用于 POJO,通过XML或Java SE 5注释进行配置。
2. 下面选项哪个不是Spring中接口注入的方式?(D )
A 接口注入
B 构造子注入
C 设值注入
D 指针注入
3. 下列关于Spring特性中IoC描述错误的是:(A)
A IoC就是指程序之间的关系由程序代码直接操控。
B 所谓“控制反转”,是指控制权由应用代码转到外部容器,控制权的转移,
C IoC将控制创建的职责搬进了框架中;并把它从应用代码脱离开来
D 当使用Spring的IoC容器时只需指出组件需要的对象,在运行时Spring的IoC容器会根据XML配置数据提供给它。
二、Spring基础知识及IOC_简答题
1. 请简述Spring的工作机制?
参考答案:Spring的工作机制可从以下几点来描述:
(1)spring mvc请所有的请求都提交给DispatcherServlet,它会委托应用系统的其他模块负责负责对请求进行真正的处理工作。
(2)DispatcherServlet查询一个或多个HandlerMapping,找到处理请求的Controller。(3)DispatcherServlet请请求提交到目标Controller
(4)Controller进行业务逻辑处理后,会返回一个ModelAndView
(5)Dispathcher查询一个或多个ViewResolver视图解析器,找到ModelAndView对象指定的视图对象(6)视图对象负责渲染返回给客户端。
2. 请回答你为什么用Spring的工作机制?
参 考答案:Spring能有效的组织你的中间层对象,不管你是否选择使用了EJB。如果你仅仅使用了strus或其他为j2ee的API特性的 framework,spring致力于解决剩下的问题。Spring能够消除在许多工程中常见的对singleton的过多的使用。这个是一个很大的问 题,它降低了系统的可测试性和面向对象的程度。通过把对接口编程而不是对类编程的代价几乎减少到没有,spring能够促进良好的变成习惯的养成。
3. 请简述Spring是什么?
参考答案:Spring是一个轻型的容器,是J2EE规范的轻量级实现,是企业应用的“一站式”解决方案。其中的核心就是bean工厂,用以构造我们需要的Model,spring是非侵入式的,Spring的应用中的对象不依赖于Spring的特定类。
4. 简述spring的组成?
参考答案:Spring主要由以下六个部分组成
① SpringCore:核心容器,BeanFactory提供了组件生命周期的管理,组件的创建,装配,销毁等功能。
SpringContext:ApplicationContext,扩展核心容器,提供事件处理、国际化等功能。它提供了一些企业级服务的功能,提供了JNDI,EJB,RMI的支持。
②Spring AOP:提供切面支持。
③ Spring DAO:提供事务支持,JDBC,DAO支持。
④ Spring ORM:对流行的O/RMapping封装或支持。
⑤ Spring Web:提供Web应用上下文,对Web开发提供功能上的支持,如请求,表单,异常等。
⑥ Spring Web MVC:全功能MVC框架,作用等同于Struts。
5.简述Spring容器提供了哪些功能?
参考答案:Spring容器提供了对对象的管理,如Spring容器负责生成、组装、销毁组件,,另外Spring容器还提供了对持久化的支持,对事务的支持。另外Spring容器提供了国际化等功能。
6. 在Spring中,bean的注入有几种方式,各是什么?
参考答案:Spring中,Bean的注入有两中方式,分别是Setter注入和构造器注入。
7. 请简述:Spring bean的作用域?
参考答案:在spring2.0之前bean只有2种作用域即:singleton(单例)、non-singleton(也称prototype),Spring2.0以后,增加了session、request、global 。session 三种专用于Web应用程序上下文的Bean。因此,默认情况下Spring2.0现在有五种类型的Bean。当然,Spring2.0对Bean的类型的 设计进行了重构,并设计出灵活的Bean类型支持,理论上可以有无数多种类型的Bean,用户可以根据自己的需要,增加新的Bean类型,满足实际应用需 求。
8. 请叙述设值注入的优点?
参 考答案:设置注入的优点:
(1)与传统的JavaBean的写法更相似,程序开发人员更容易了解和接受。通过setter方法设定依赖关系显得更加直观、 自然。
(2)对于有复杂的依赖关系,如果采用构造注入,会导致构造器过于臃肿,难以阅读。Spring在创建bean实例时,需要同时实例化其依赖的全部 实例,因而导致性能的下降,而使用设值注入能够解决这些问题。
(3)尤其是某些属性可选的情况下,多参数的构造器更加笨重。
9. 请叙述构造注入的优点?
参 考答案:构造注入的优点:
(1)可以在构造器中决定依赖关系的注入顺序,优先依赖的优先注入。
(2)对于依赖关系无须变化的bean,构造注入更加有用 处。因为没有setter方法,所有的依赖关系全部在构造器内设定,因此,无须担心后续的代码对依赖关系产生破坏。
(3)依赖关系只能在构造器中设定,则 只有组建的创建者才能改变组建的依赖关系。对组建的调用者而言,组建内部的依赖关系完全透明,更符合高内聚的原则。
10. 说出bean工厂创建bean的三种方式?
参考答案:Bean工厂创建bean的三种方式分别是:
(1)直接构造,需要一个default constructor和相应的setters/getters方法。
要注意的是,我们可以为getter/setter方法传递参数(用preperties标签),也可以为构造函数传递参数
(2)采用静态工厂方法,如:
<bean id="exampleBean"class="examples.ExampleBean2" factory-method="createInstance"/>
这里要求examples.ExampleBean2类有个静态方法createInstance
(3)非静态工厂方法
<bean id="myFactoryBean" class="..."> </bean>
<bean id="exampleBean" factory-bean="myFactoryBean" factory-method="createInstance"/>
在这里,必须没有class标签,factory-bean是BeanFactory,factory-method是它的非静态方法,myFactoryBean可以通过容器来管理和配置。
11. 请写出bean的生命周期的方法?
参 考答案:
(1)通过设置bean的init-method属性指定初始化的方法,他的限制是方法无法接受任何参数,方法可以为static。
(2)实现 InitializingBean接口的afterPrioertiesSet()方法。(3)销毁对象可以通过disposableBean的 destroy的实现。
12. 请简述你对IOC的理解?
参考答案:IOC即Inversion of Control,就是反转控制,Ioc将控制创建的职责搬进了框架之中,并把它从应用代码中分隔开来,使用Ioc容器则需要指出组件需要什么对象在运行时容器会提供给它,容器是通过查看对象的参数表做到的,也可能根据配置数据如xml。
13. 请回答:IoC最大的好处是什么?
参考答案:IoC最大的好处是降低了对象的耦合性,实现了应用的松散耦合。因为把对象生成放在了XML里定义,所以当我们需要换一个实现子类将会变成很简单(一般这样的对象都是现实于某种接口的),只要修改XML就可以了。
14. 简述IoC的类型?
参考答案:IOC可以分为三种注入类型,分别是构造函数注入、属性注入和接口注入。Spring主要支持构造函数注入和属性注入。
15. Spring中依赖注入与传统编程之间的差别是什么?
参 考答案:在传统的程序设计过程中,通常由调用者来创建被调用者的实例。但在Spring里,创建被调用者的工作不再由调用者来完成,因此称为控制反转;创 建被调用者实例的工作通常由Spring容器来完成,然后注入调用者,因此也称为依赖注入。依赖注入的主要作用是起到解耦合的作用。
三、.AOP_简答题
1. 说出Spring的通知类型有哪些?
参考答案:Spring的通知类型有(1) MethodBeforeAdvice (2) AfterReturningAdvice (3) MethodInterceptor (4)ThrowsAdvice
2. 谈谈目标对象实现接口与目标对象不实现接口有什么区别?
参考答案:目标对象实现接口与目标对象不实现接口主要有以下几点区别:
(1)如果目标对象实现了接口,默认采用JDK的动态代理机制实现AOP
(2)如果目标对象实现了接口,可以强制spring采用CGLIB实现代理
(3) 如果目标对象没有实现接口,必须采用CGLIB实现代理,spring会自动的在CGLIB和JDK动态代理之间切换
3. 请描述JDK动态代理和CGLI代理的区别?
参考答案:JDK 的动态代理只能对实现了接口的目标类进行代理,而不实现接口的类就不能使用 JDK 的动态代理 CGLIB是针对类来实现代理,当没有实现接口的类需要代理时就需要通过 CGLIB
来实现代理了,他的原理是对指定的目标类生成一个子类,并覆盖其中方法实现增强,但是因为采用的是继承,所以不能对 finall类进行继承。二者在某些特殊场合需混合使用
4. 简述ProxyFactoryBean的作用是什么?
参考答案:ProxyFactoryBean的作用是依照配置信息,将切面应用到目标对象,生成动态代理对象。
5. 叙述Spring中的自动代理的原理?
参考答案:Spring在生成代理对象的时候,默认情况下,会使用被代理对象的接口来生成代理对象。如果被代理对象没有实现接口,此时,Spring会使用CGLIB生成代理对象,此时该代理对象是被代理对象的子类。
5. 写出创建代理对象需指定的三要素是什么?
参考答案:创建代理对象需要指定的三要素是:target:设定目标对象(只能是一个);proxyInterfaces:设定代理接口(目标对象所实现的接口);interceptorNames:设定拦截器的名字(各个advice或advisor bean的列表)
6. 写出代理的两种方式分别是什么?
参考答案:代理的两种方式是:静态代理和动态代理,其中静态代理针对每个具体类分别编写代理类;针对一个接口编写一个代理类。而动态代理针对一个方面编写一个InvocationHandler,然后借用JDK反射包中的Proxy类为各种接口动态生成相应的代理
7. 请简述:什么是AOP?
参考答案:将程序中的交叉业务逻辑提取出来,称之为切面。将这些切面动态织入到目标对象,然后生成一个代理对象的过程。
8. 简述AOP核心?
参考答案:AOP核心主要包括以下内容:(1)Aspect(切面),(2)Joinpoint(连接点),(3)Advice(通知),(4)Pointcut(切入点),(5)Introduction(引入),(6)Weaving(织入),(7)Target(目标对象),(8)Proxy(代理对象)
9. 请叙述AOP事务的含义?
参考答案:Spring中进行事务管理的通常方式是利用AOP(面向切片编程)的方式,为普通java类封装事务控制,它是通过动态代理实现的,由于接口是延迟实例化的,spring在这段时间内通过拦截器,加载事务切片。
四、Spring对持久化的支持_简答题
1. 请叙述Spring对持久层支持所采用的策略?
参 考答案:Spring对持久层采取了很好的支持,这些支持策略主要有:
(1)Spring对持久层“不发明重复的轮子”,即没有重新实现新的持久层方案, 对现有持久层方案做封装,更利于使用。
(2)采用DAO模式。
(3)提供了大量的模板类来简化编程 (HibernateDaoSupport,JdbcTemplate等)
(4)重新设计了一套完善的异常体系结构:①类型丰富,细化异常类型。② 全都是运行时异常(RuntimeException)。
2. 请问Spring如何简化事务配置?
参 考答案:pring简化事务配置有两种方式:第一种方式就是使用TransactionProxyFactoryBean创建事务代理(通常事务代理以 Service层为目标bean)配置hibernate的事务管理器,使用HibernateTransactionManager类,该类实现了 PlatformTransactionManager接口,针对hibernate持 久化连接的特定实现。第二种方式使用自动创建代理简化事务配置使用BeanNameAutoProxyCreator和 DefaultAdvisorAutoProxyCreator创建代理时,并不一定是创建事务代理,关键在于传入的拦截器,如果传入事务拦截器,将可自 动生成事务代理
3. 请简述Spring的事务机制?
参 考答案:Spring对事务的支持很丰富,除了编程式的处理事务,Spring还支持声明式事务。其次Spring使用事务服务代理和事务管理器(如 HibernateTransactionManager)来支持事务服务。另外Spring对事务的边界多了一种嵌套事务。
4.请回答:Spring API中的getCurrentSession()和openSession()两个方法的区别?
参 考答案:getCurrentSession()和openSession()两个方法主要有两点的区别:
(1)采用 getCurrentSession()创建的session会绑定到当前线程中,而采用openSession()创建的session则不会。
(2) 采用getCurrentSession()创建的session在commit或者rollback后会自动关闭,而采用openSession的方式 需要手动进行关闭。
5. 请叙述Spring中使用Hibernate事务的步骤?
参考答案:Spring中使用Hibernate事务的步骤为:
(1)配置数据源
(2)配置sessionfactory
(3)配置事务管理器
(4)创建事务服务代理
6. 请叙述关于Spring的声明式事务处理?
参 考答案:Spring声明式事务让我们从复杂的事务处理中得到解脱。使得我们再也无需要去处理获得连接、关闭连接、事务提交和回滚等这些操作。再也无需要 我们在与事务相关的方法中处理大量的try?catch?finally代码。我们在使用Spring声明式事务时,有一个非常重要的概念就是事务属性。 事务属性通常由事务的传播行为,事务的隔离级别,事务的超时值和事务只读标志组成。我们在进行事务划分时,需要进行事务定义,也就是配置事务的属性。
7. 请叙述Spring的事务传播属性与隔离级别?
参 考答案:在使用Spring时,大部分会用到他的声明式事务,简单的在配置文件中进行一些规则配置,利用Spring的AOP功能就能轻松搞定事务问题; 这里面就涉及到一个事务的传播属性问题Propagation,它在TransactionDefinition接口中定义,以供 PlatfromTransactionManager使用,PlatfromTransactionManager是spring事务管理的核心接口。
在TransactionDefinition接口中定义了五个不同的事务隔离级别,ISOLATION_DEFAULT这是一个PlatfromTransactionManager默认的隔离级别,使用数据库默认的事务隔离级别.另外四个与JDBC的隔离级别相对应,ISOLATION_READ_UNCOMMITTED这是事务最低的隔离级别,它充许别外一个事务可以看到这个事务未提交的数据。这种隔离级别会产生脏读,不可重复读和幻像读。
五、Spring+Struts+Hibernate
1. Spring对多种ORM框架提供了很好的支持,简单描述在Spring中使用Hibernate的方法,并结合事务管理?
参 考答案:Hibernate是最优秀的ORM框架,Spring对其提供了很好的支持,那么在Spring中使用Hibernate时要:
(1)为每一个 bean写hibernate映射文件,配置datasourse,hibernateDaoTemplate,sessionFactory,把 datasourse和映射文件注入到sessionFactory
(2) 每个dao都继承spring容器中提供的一个类HibernateDaoSupport,为每个dao注入 hibernateDaoTemplate
(3)在dao中使用getHibernateDaoTemplate()的方法。Spring中可以把需要进 行事务控制的Biz注入到transactionProxy,为biz方法配置transactionAttribute
2.请比较一下Spring framework与Struts?
参考答案:Struts只是一个MVC框架(Framework),用于快速的开发Java Web应用。Struts实现的重点在C(Controller),包括Actionservlet/RequestProcessor和我们定制的Action,也为V(View)提供了一系列的标签(Custom Tag)。而Spring是一个轻型容器,其中核心是bean工厂(beanfactory),用以构造我们所需的Model。在此基础上,spring提供了AOP(面向切面编程)的实现,用它来提供非管理环境下申明方式的事务、安全等服务;对Bean工厂 的扩展ApplicationContext更加方便我们实现j2ee的应用;Dao/ORM的实现方便我们进行数据库的开发;Web
MVC和Spring Web提供了java Web应用的框架或与其他流行的Web框架进行集成。两者进行结合在一起使用是最好的方式。
3. 请叙述编写业务逻辑的方法?
参考答案:继承HibernateDaoSupport类,使用HibernateTemplate来持久化,HibernateTemplate是HibernateSession 的轻量级封装。默认情况下运行期异常才会回滚(包括继承了RuntimeException子类),普通异常是不会滚的。编写业务逻辑方法时,最好将异常 一直向上抛出,在表示层(struts)处理。关于事务边界的设置,通常设置到业务层,不要添加到Dao上。
4. 在Web分层架构中业务层为什么都选择Spring?
参考答案:因为Service层需要处理业务逻辑和交叉业务逻辑,处理事务,日志,安全等,而这些与Spring的IoC特性,AOP等不谋而合。
----------------------------------------------------------------------------------------------------------
Spring考试试卷 (题库)
1. 下列关于AOP的说法错误的是( )。
A.AOP将散落在系统中的“方面”代码集中实现
B.AOP有助于提高系统的可维护性
C.AOP已经表现出了将要替代面向对象的趋势
D.AOP是一种设计模式,Spring为其提供了一种实现
2. 在SSH整合时,事务隔离级别是由(B )实现的。
A.Java应用程序
B.Hibernate
C.数据库系统
D.JDBC驱动程序
3. 下列( BC)不是Spring的依赖注入方式。【选两项】
A.setter注入
B.getter注入
C.接口注入
D.构造注入
4. 在Spring框架中,面向方面编程(AOP)的目标在于(A )。
A.编写程序时不用关心其依赖组件的实现
B.将程序中涉及的公用问题集中解决
C.封装JDBC访训数据库的代码,简化数据访训层的得复性代码
D.实现画面的“无刷新”
5. 关于Spring 与 Hibernate集成,下列说法错误的是(A )。
A.Spring提供了HibernateDaoSupport类来简化Hibernate的使用
B.在Spring配置文件中,可以通过Spring提供的LocalSessionFactoryBean来获得SessionFactory的实例
C.通过集成Spring和Hibernate,用Spring管理程序的依赖关系,将SessionFactory注入到DataSource中
D.通过Spring,可以在Biz层代码中无需直接实例化DAO类,而是通过注入得到
6. 在Spring中,下列关于依赖注入的说法,正确的是(A )。
A.依赖注入的目标是在代码之外管理程序组建间的依赖关系(组件?组建?)
B.依赖注入即“面向接口”的编程
C.依赖注入是面向对象技术的替代品
D.依赖注入的使用会增大程序的规模
7. 下列关于Spring的说法错误的是( C)。
A.Spring是一个轻量级JAVA EE的框架集合
B.Spring是“依赖注入”模式的实现
C.使用Spring可以实现声明事务
D.Spring提供了AOP方式的日志系统
8. 在Spring 中,配置Hibernate 事务管理器(Hibernate TransactionManager)时,需要注入的属性名称是(B)。
A.dataSource
B.sessionFactory
C.baseHibernateDao
D.transactionProxyFactoryBean
9. 下列(C )不是Spring AOP中的通知类型。
A.前置通知 B.后置通知 C.代理通知 D.异常通知
10. 关于Spring与Hibernate集成,下列说法错误的是( )。
A.Spring提供了HibernateDaoSupport类来简化Hibernate的使用
B.在Spring配置文件中,可以通过Spring提供的LocalSessionFactoryBean来获得SessionFactory的实例
C.通过集成Spring和Hibernate,用Spring管理程序的依赖关系,将SessionFactory注入到DataSource中
D.通过Spring,无须在Biz层代码中直接实例化DAO类,而是可以通过注入得到
11. 在Spring中,关于依赖注入,下列说法错误的是( B)。
A.依赖注入是一种设计开发模式
B.依赖注入使组件之间相互依赖、相互制约
C.依赖注入提倡使用接口编程
D.依赖注入可以独立开发各组件,然后根据组件间的依赖关系进行组装
12. 关于Spring,下列说法不正确的是(D )。
A.运用Spring,可以通过一个setter方法暴露一个类的任何依赖关系
B.Spring解决依赖性问题的方法即反向控制或依赖注入
C.Spring从配置方面来解决依赖性问题,无须编写一个数据库连接
D.Spring从配置方面来解决依赖性问题,同时也需要编写一个数据库连接
13. 下列对Spring的7个模块的说法,正确的有(AC )。【选两项】
A.各模块(或组件)可以单独存在
B.各模块(或组件)不可以单独存在,必须要一起使用
C.核心模块的BeanFactory使Spring成为框架
D.上下文模块使Spring成为容器
14. Spring以Bean的方式管理所有的组件,此处的Bean指的是(B )。
A. 必须符合JavaBean
B. 任何Java对象以及Java组件都视为Bean
C. 必须要有getter方法和setter方法
D. EJB组件
15. 在Spring中,Bean属性中的autowire包括( ABCE)。【选四项】
A.byName
B.byType
C.constructor
D.bySet
E.no
16. 在Spring中,Bean属性中的dependency-check包括( )。【选三项】
A.no B.objects C.simple D.all
17. 在Spring中,下列关于Bean属性中的singleton的说法,正确的有(CD )。【选两项】
A.用于定义Bean是否为Singleton
B.默认为false
C.默认为true
D.在BeanFactory作用范围内,仅维护此Bean的一个实例
18. Spring包括两种不同的容器,分别是( )。【选两项】
A.BeanFactory
B.FileSystemXmlApplicationContext
C.ClassPathXmlApplicationContext
D.ApplicationContext
19. 下列能够判断Spring容器是否包含ID为proBean的Bean的代码为( )。
A.boolean flag = beanFactory.containsBean("proBean");
B.PropertiesBean propertiesBean= (PropertiesBean)beanFactory.getBean("proBean");
C.Class classType = beanFactory.getType("proBean");
D.PropertiesBean propertiesBean= (PropertiesBean)beanFactory.getBean("proBean", PropertiesBean.class);
20. 在Spring中,ApplicationContext继承了BeanFactory接口,提供BeanFactory的所有功能,同时具有部分新功能,包括(ABC )。【选三项】
A.提供国际化的支持 B.资源访问 C.事务传递 D.载入多个配置文件
21. Spring常见的注入方式有( AD)。【选两项】
A.setter注入 B.getter注入 C.接口注入 D.构造注入
22. 在Spring中,设值注入的优点包括( )。【选三项】
A.对于习惯了传统JavaBean开发的程序员而言,通过setter方法设定依赖关系更加直观自然
B.当依赖关系(或继承关系)较复杂时,构造注入方式的构造函数相当庞大。此时若使用设值注入的方式,则简单快捷
C.某些第三方类库要求组件必须提供默认的构造函数,此时构造注入方式的依赖注入机制会突显其局限性,难以完成期望功能
D.在构造期即能创建完整、合法的对象
23. 在Spring中,构造注入的优点包括( )。【选三项】
A.将创建完整、合法对象的工作任务转交给构造函数外的其他方法
B.避免了编写繁琐的setter方法,所有的依赖关系都在构造函数中设定
C.由于不存在setter方法,而是在构造时由容器一次性设定依赖关系,因而组件在创建之后即处于相对不变的稳定状态,无须担心上层代码在调用过程中执行setter方法时破坏组件之间的依赖关系
D.通过构造子注入,可以在构造函数中决定依赖关系的注入顺序?????????
24. 在Spring中,关于IOC的理解,下列说法正确的有( )。【选两项】
A. 控制反转
B. 对象被动地接受依赖类
C. 对象主动地寻找依赖类
D. 一定要用接口
25. 下列关于在Spring中配置Bean的id属性的说法,正确的有( )。【选两项】
A. id属性值可以重复
B. id属性值不可以重复
C. id属性是必须的,没有id属性会报错
D. id属性不是必须的
26. 在Spring中,关于依赖注入,下列选项中说法错误的是( )。
A. 依赖注入能够独立开发各组件,然后根据组件间的关系进行组装
B. 依赖注入使组件之间相互依赖、相互制约
C. 依赖注入提倡使用接口编程
D. 依赖注入指对象在使用时动态注入
27. 在Spring中,下列关于setter注入和构造注入的说法,正确的有( )。【选两项】
A.执行效果完全相同
B.注入依赖关系注入时机不同
C.setter注入方式依赖对象先注入
D.构造注入方式依赖对象先注入
28. 在Spring中,下列关于AOP的说法正确的是( )。
A.AOP为OOP的补充和完善
B.AOP为OOA的补充和完善
C.AOP将逐渐代替OOP
D.AOP将逐渐代替OOA
29. 在Spring中,AOP将软件系统分为两个部分,分别是( )。【选两项】
A.切面 B.业务处理 C.核心关注点 D.横切关注点
30. 在Spring中,实现AOP代理时,下列说法正确的有( )。【选三项】
A.Spring默认使用用于接口的JDK动态代理
B.Spring只能使用JDK动态代理
C.Spring也可以使用CGLIB代理
D.Spring主要使用JDK动态代理
31. 在Spring中,使用Java实现代理方式需实现InvocationHandler接口,且必须实现
invoke(Object proxy, Method method, Object[] args)方法,则下列说法正确的有( )。【选三项】
A.第一个参数是目标类
B.第二个参数Method由被代理接口的方法调用
C.第三个参数是方法调用的参数
D.当程序调用代理的目标方法时,会自动变为调用invoke方法
32. 在Spring中,Proxy.newProxyInstance(mobile.getClass().getClassLoader(),mobile.getClass().getInterfaces(), this) 方法根据接口数组动态创建代理类实例,下列说法不正确的是( )。
A.第一个参数用于创建动态代理的ClassLoader对象
B.第二个参数为代理对象
C.第三个参数为代理包含的处理实例
D.第二个参数为接口数组
33. Spring的环绕通知必须实现的接口是( )。
A.InvocationHandler
B.MethodInterceptor
C.MethodBeforeAdvice
D.AfterReturningAdvice
34. Spring的后置通知必须实现的接口是( )。
A.InvocationHandler
B.MethodInterceptor
C.MethodBeforeAdvice
D.AfterReturningAdvice
35. 在Spring中,ProxyFactoryBean继承了父类ProxyCreatorSupport的所有配置属性,同时添加了部分独有属性interceptorNames,下列说法正确的有( )。【选两项】
A.可以通过该属性指定多个将织入目标对象的Advice
B.采用类似ProxyFactory的addAdvice方法来逐一添加
C.采用类似ProxyFactory的addAdvisor方法来逐一添加
D.此属性属于Collection类型,可以通过配置元素<list>添加需要的拦截器名称
36. 在Spring中,下列关于AOP的理解,正确的有( )。【选两项】(A/B选项不完整)
A. 面向纵向的 B. 面向横向的 C. AOP关注的是面 D. AOP关注的是点
37. 在Spring框架中,面向方面编程(AOP)的目标在于( )。
A. 编写程序时无须关注其依赖组件的实现
B. 封装JDBC访问数据库的代码,简化数据访问层的重复性代码
C. 将程序中涉及的公共问题集中解决
D. 可以通过Web服务调用
38. 在Spring中,下面的代码定义了一个前置通知类,则下列选项中,说法错误的是( )。
public class LogAdvice implements MethodBeforeAdvice{
public void before(Method m,Object[]arges,Object target) throws Throwable{
System.out.println(m.getName()+"(" + Arrays.toString(args) +")";
}
}
A. 方法before是MethodBeforeAdvice接口中定义的方法
B. 参数m是被通知的目标方法
C. 参数args是调用方法的参数
D. 参数target是代理类
39. 通过Spring构建Hibernate,存在的优点有( )。【选三项】
A.测试简单
B.异常封装
C.通用的代码管理
D.综合的事务管理
40. 在SSH整合时,findByExample(Account instance)方法的作用是( )。
A.根据一个属性的值查询
B.将传入的对象状态设置为Transient状态
C.根据对象查询,查询条件为对象的属性值
D.添加与修改,类似于saveOrUpdate
41. 在Spring和Hibernate的整合过程中,各对象注入的顺序是( )。(空格)
A.DataSource->SessionFactory-> Biz -> DAO
B.SessionFactory -> DataSource ->DAO->Biz
C.DataSource->SessionFactory->DAO->Biz
D.SessionFactory -> DataSource -> Biz -> DAO
42. 在Spring包装Hibernate后,能够用于保存数据的方法有( )。【选三项】
A. save B. load C. saveOrUpdate D. merge
43. 关于Spring与Hibernate集成,下列说法错误的是( )。
A. 通过集成Spring与Hibernate,以Spring管理程序的依赖关系,将SessionFactory
注入DataSource
B. 通过Spring,在Biz层代码中无须直接实例化DAO类,而是通过注入获得
C. 通过Spring,在DAO类中无须实例化SessionFactory,而是通过注入获得
D. Spring提供HibernateDaoSupport类来简化Hibernate的使用
44. Spring整合Hibernate后,下列关于findByCriteria方法的说法正确的是( )。
A. 参数是HQL
B. 参数是Retrictions对象
C. 参数是DetachedCriteria对象
D. 该方法不支持分页
45. 关于Spring对Hibernate提供的支持,下列说法错误的是( )。
A. 提供了综合的事务管理 B. 提供了统一的异常继承体系
C. 便于测试 D. 没有给查询提供良好的支持
46. 在Spring中,下列说法正确的是( )。
A. Spring DAO需要注入DataSource B. Spring DAO需要注入SessionFactory
C. DataSource需要注入SessionFactory D. Spring DAO无须注入SessionFactory
47. 在Web启动时创建ApplicationContext,下列选项错误的是( )。
A. <listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
B. <servlet>
<servlet-name>context</servlet-name>
<servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class>
</servlet>
C. <context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/classes/applicationContext.xml,(逗号去掉否)
/WEB-INF/classes/applicationContext_biz.xml
</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener </listener-class>
</listener>
D. <context-param>
<param-name>contextConfigLocation</param-name>
<param-value> classpath*:applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener </listener-class>
</listener>
48. Spring IOC容器管理Action的方式有( )。【选两项】
A.使用org.springframework.web.struts.DelegatingRequestProcessor
B.使用org.springframework.web.struts.DelegatingActionProxy
C.使用org.springframework.web.context.ContextLoaderListener
D.使用org.springframework.web.context.ContextLoaderServlet
49. 使用org.springframework.web.struts.DelegatingActionProxy时,需要什么配置?( )
A.需要在struts-config.xml中配置
<controller processorClass="org.springframework.web.struts.DelegatingRequestProcessor"> </controller>
B.需要在web.xml中配置
<controller processorClass="org.springframework.web.struts.DelegatingRequestProcessor"> </controller>
C.需要在hibernate.cfg.xml中配置
<controller processorClass="org.springframework.web.struts.DelegatingRequestProcessor"> </controller>
D.需要在applicationContext.xml中配置
<controller processorClass="org.springframework.web.struts.DelegatingRequestProcessor"> </controller>
50. SSH整合的优点有( )。【选两项】
A.实现了视图、控制器与模型的彻底分离
B.实现了业务逻辑层与持久层的分离
C.具有可扩展性
D.具有可维护性
51. 在Spring中,BeanFactory由org.springframework.beans.factory.BeanFactory接口定义,是工厂模式的实现,其作用包括( )。【选三项】
A.负责创建和管理Bean
B.负责在实例化Bean之前创建Bean之间的联系
C.创建及分发Bean
D.参与到Bean生命周期中,调用对象的初始化函数及析构函数
52. Spring的优点包括( )。【选三项】
A.低入侵式设计,代码污染低
B.独立于各种服务器,真正实现Write Once、Run Anywhere
C.Spring的AOP机制降低了业务对象替换的复杂性
D.Spring的高度开放性,不强制要求应用完全依赖于Spring
53. Spring实现了( )两种基本设计模式。【选两项】
A.门面模式 B.工厂模式 C.单态模式 D.多态模式
54. 单态模式的优势不包括( )。
A.尽量减少Java对象的创建和销毁时的开销
B.避免Java类的频繁实例化
C.让相同类的全部实例共享同一内存区
D.无须要求一个类只有一个实例
55. Spring的核心机制是( )。
A.依赖注入 B.AOP C.声明式事务 D.资源访问
56. Spring依赖注入对调用者和被调用者是否有要求?( )
A.对调用者有要求
B.对被调用者有要求
C.对调用者和被调用者都没有要求
D.以上说法都不正确
57. Spring以Bean的方式管理所有的组件,此处的Bean不包括( )。
A.任何Java对象
B.任何Java组件
C.任何JavaBean
D.必须符合规范的JavaBean
58. 在Spring中,用于产生Bean工厂的是( )。
A.Spring的BeanFactory
B.Spring的AOP
C.Spring的资源
D.Spring的核心库
59. 对应web应用,无须在代码中手动实例化ApplicationContext,可通过ContextLoader声明式地创建。ContextLoader有两个实现类,分别是( )。【选两项】
A.ContextLoaderListener
B.ContextWebListener
C.ContextLoaderServlet
D.ContextWebServlet
60. 在Spring中,AOP框架具有的两个主要特征是( )。【选两项】
A.各部分之间良好的隔离性
B.可维护性
C.源代码无关性
D.可扩展性
////end