2024年5月5日发(作者:)
Spring笔试考试题目
考生姓名:________ 考生班级:_______ 评分:_______________________
一:填空(总分20分)
: Spring 的框架是一个____轻量级________容器,以___IOC_____模式作为核心,从而可以实现应用程序组件的
_______松散耦合 ______结构,让应用程序组件可以容易进行测试。
: Spring中实现IoC模式的方法都有_____注入依赖_____________, _____java注解____________, ___________schema XML方式 ________,
________serviceLocator_____________。
: Spring中基于Web的ApplicationContext下可以用到的特有的Bean的作用域都有_request _________________,
______session ___________, _________globalsession _________。
: Spring中的AOP术语的全称是_______面向切面编程_______________(中文)、
___aspect-OrientedProgramming_________________(英文),在Spring中它的实现机制是采用__________________
动态代理____实现的。
:在Spring AOP中,Advice(增强)被应用至对象之上的过程称之为___缝合_____________(中英文都填),其选择时
机有几个时间点,分别是:______编译_______时期、_类别加载_____________时期、和_执行_________________时期。
:配置Spring中的@AspectJ时,需要配置_
增强; 该标签有一个proxy-target-class属性,默认为____false__________,表示使用_jdk动态代理治入增强
_________代理方式,当配置为
___cglib动态代理技术治入增强___________代理方式。
:在Spring AOP中,我们可以通过_______@pointcut_________注解对切点表达式进行命名。
:Spring AOP中,在“进入”连接点的情况下,___最高________优先级的增强会先执行;在“退出”连接点的情况下,
_____最高________优先级的增强会最后执行;对于定义在相同切面的增强,根据____声明的顺序_____________来确
定执行顺序。
:使用Schema XML配置Spring AOP时,
求,要求的顺序分别是:_____
______
:Spring事物管理中,重要的三个概念分别是__transactiondefinition________________ ,_____transactionStatus
____________,____platformtransactiomanger _____________________。
二:选择(注意:单选或者多选混选)(总分20分)
:可以实现IoC (Inversion of Control) 模式的方法都有哪些?_______ABCD_____________
A:依赖注入(Dependency Injection)
B:Service Locator
C:Java 注解
D:Schema XML方式
:Spring中Bean的自动装配都有哪些选择? _____ABCD_______________
A:By Type
B:By Name
C:No
D:Constructor方式
E:Autodetect方式
:Spring中ApplicationContext能够用到的Bean的作用域都有哪些? _____ABC_____________
A:Singleton
B:Prototype
C:Session
D:Response
:我们学习过的Abstract Factory,Prototype,Singleton模式按照设计模式的分类都属于哪种?
___AD_________________
A:创建型设计模式
B:结构型设计模式
C:行为型设计模式
D:对象范围的设计模式
:Bean的基本配置中,如果有诸如List,Set,Map和Properties的属性,那么可以通过下述哪些对应的标签来配置?
______ABCD______________
A:
B:
C:
D:
:Spring的AOP的动态代理机制都有哪些? _______AB_____________
A:CGLib库
B:JDK动态代理
C:Proxy代理
D:Auto代理
:Spring中的@AspectJ切点表达式函数都有哪些? _______ABCD_____________
A:方法切点函数
B:方法入参切点函数
C:目标类切点函数
D:代理类切点函数
:说明下面切面类的增强实施到业务方法int foo(String name)时,其增强各自执行后结果是什么?
@Aspect
public class AspectWithMultipleAdviceDeclarations {
@Pointcut("execution(* foo(..))")
public void fooExecution() {}
@Before("fooExecution()")
public void doBeforeOne() {
.
}
@Before("fooExecution()")
public void doBeforeTwo() {
.
}
@AfterReturning("fooExecution()")
public void doAfterOne() {
.
}
@AfterReturning("fooExecution()")
public void doAfterTwo() {
.
}
} ______ebadc______________(注意顺序)
A:foo
B:doBeforeTwo
C:doAfterTwo
D:doAfterOne
E:doBeforeOne
:下面哪些不支持切点中的通配符,如+, .., 和*? _______abcd_____________
A:@args()
B:@within()
C:@target()
D:@annotation()
:下面哪个是Spring AOP中的引介增强? _______E_____________
A:@Before
B:@AfterReturning
C:@Around
D:@AfterThrowing
E:@DeclareParents
三:判断对错(总分30分)
:Spring中,我们可以选择DBCP,C3P0来配置数据源。 ( T )
:在Bean的基本配置中,如果某个Bean属性要默认为空,我们可以利用将该属性设置为null来实现;如
:在配置Bean时,内部Bean中的singleton标记及id或name属性将不会被忽略,内部bean总是匿名的且它们总是
prototype模式的。同时将内部bean注入到包含该内部bean之外的bean也是可能的。(F )
:下面配置的Bean,Spring会在启动时,IoC容器默认会将该bean提前进行实例化。
(F )
:Spring中配置的Bean,要么只能都用Autowire自动装配,要么都不用Autowire自动装配。( F )
:在Spring中,大多数配置的Bean都是Prototype类型的,并且Spring会对Prototype类型的Bean负责其整个生
命周期的。 ( F )
:切点表达式中的通配符“+”:其含义表示按类型匹配指定类的所有类,仅能跟在类名后面。
( T ) :Spring的AOP中,用注解表示
的后置增强是@After。 ( F )
:Spring的AOP中,定义在不同的切面里的两个增强都需要在一个相同的连接点中运行,那么除非我们显式指定,否
则执行的顺序是未知的。 ( T )
:Spring AOP中,Advisor是切点和增强的复合体,它可以包含多个切点和增强。( F )
:Spring的AOP中,切点绑定增强方法时,是按名字匹配的,但是在绑定连接点时,是按参数顺序匹配的。
( T )
:使用Spring统一的DAO异常体系时,如果访问数据资源时失败,如无法获取数据连接,无法获取Hibernate的会话
等,我们可以捕获ConcurrencyFailureException类型的异常。 ( F )
:Spring中,如果我们的持久层采用Spring提供的模板类来实现,为了要使持久层的方法是多线程安全的,我们可以
选择继承Spring提供的支持类xxxSupport。 ( F )
:Spring AOP中,不仅支持方法上的连接点,还支持属性上的连接点。 ( F )
:Spring中,持久层、业务层的Bean一般是加载到Spring容器中的根容器,而为融合Struts框架设计的Action Bean
一般是加载到子容器中的;父容器是可以访问子容器中的Bean元素的。 ( F )
四:问答题(总分20分)
:请阐述Spring框架和EJB相比较,各自的优缺点?
Spring核心是依赖注入模式
spring可以随时测试
EJB测试非常麻烦
EJB3,0是一个标准的框架
:在Spring IoC核心模式中,试比较三种推荐的依赖注入方式的相同点和不同点?
:请解释你所理解的AOP中的如下概念:增强、切入点、连接点、切面,并说明它们之间的关系。以及Spring的AOP
框架是如何用这些概念搭建并实现的,请阐述你的理解?
:说明你Spring中Bean的各种生命周期的理解?
:这里为下面的业务类方法编写了两个切面类,每个切面类中分别定义了一些增强方法,请完成下面的问题。
.");
}
public void serveTo(String clientName, int times){
"NaiveWaiter:serving "+clientName+”…”+times+"...");
}
}
)")
public void beforeGreeting(){
"How are you?");
}
}
.)")
public void bindJoinPointParams(int num,String name){
"----bindJoinPointParams----");
"name:" + name);
"num:" + num);
"----bindJoinPointParams----");
}
}
先,请填写上面的空白(1)处。
2).请写出测试代码运行后的结果。
3).如果我们要把第一个切面类采用Schema XML方式来完成,请写出该种方式的配置文件,只需要写出
五:编程(总分10分)
:下面是一个需要进行事务管理的业务类,
package class UserServiceImpl implements UserService{
private UserDao userDao; //注入接口对象
private LoginLogDao loginLogDao; //注入接口对象
public void setUserDao(UserDao userDao){
=userDao;
}
public void setLoginLogDao(LoginLogDao loginLogDao){
=loginLogDao;
}
public boolean hasMatchUser throws Exception(String userName, String password){
int matchCount=(useName, password);
return matchCount>0;
}
public User findUserByUserName throws Exception (String userName){
return (userName);
}
public void loginSuccess throws Exception (User user){
(5+());
LoginLog loginLog=new LoginLog();
());
());
());
(user);
(loginLog);
}
}
其中hasMatchUser(),findUserByUserName(),loginSuccess()需要的事务管理需求描述如下:
hasMatchUser():只读事务,事务传播方式必须有事务管理,隔离级别是不能出现脏读,出现SQLException需要
回滚。
findUserByUserName():只读事务,事务传播方式可以没有事务管理,隔离级别是不能出现脏读,出现任何
Exception不需要回滚。
loginSuccess():可写事务,事务传播方式是强制方式,隔离级别是不能出现脏读,出现任何Exception需要回
发布者:admin,转转请注明出处:http://www.yc00.com/web/1714840057a2525788.html
评论列表(0条)