第1章Spring的基本应用习题一、填空题1.依赖注入的作用就是在使用Spring框架创建对象时,动态的将其所依赖的对象注入到【】组件中。2.在使用Spring框架之后,对象的实例不再由调用者来创建,而是由【】来创建,Spring容器会负责控制程序之间的关系,而不是由调用者的程序代码直接控制。3.在Spring入门程序中只需将Spring的4个基础包以及【】的JAR包复制到lib目录中,并发布到类路径下即可。4.简单来说,BeanFactory就是一个管理Bean的工厂,它主要负责初始化各种Bean,并调用它们的【】方法。5.Spring开发所需的JAR包分为两个部分:【】和【】。二、判断题1.Spring中基于构造方法的依赖注入通过调用带参数的构造方法来实现,每个参数代表着一个依赖。()2.通常在Java项目中,会采用通过FileSystemXmlApplicationContext类来实例化ApplicationContext容器的方式。()3.初学者学习Spring框架时,只需将Spring的4个基础包以及复制到项目的lib目录,并发布到类路径中即可。()4.依赖注入的作用就是在使用Spring框架创建对象时,动态的将其所依赖的对象注入到Bean组件中。()5.Spring框架采用的是分层架构,它一系列的功能要素被分成20个模块。()三、选择题1.以下关于Spring核心容器相关说法错误的是。()A:Spring框架的所有功能都是通过其核心容器来实现的。B:创建BeanFactory实例时,需要提供Spring所管理容器的详细配置信息,这些信息通常采用XML文件形式来管理。C:ApplicationContext不仅包含了BeanFactory的所有功能,还添加了对国际化、资源访问、事件传播等方面的支持。D:通常在Java项目中,会采用通过ClassPathXmlApplicationContext类来实例化ApplicationContext容器的方式,而在Web项目中,ApplicationContext容器的实例化工作会交由Web服务器来完成。2.以下有关Spring的四个基础包说法正确的是。()A:Spring的四个基础包,它们分别对应SpringWeb容器的四个模块。B:Spring的四个基础包有、、和。C:是所有应用都要用到的JAR包,它包含访问配置文件以及进行IoC或者DI操作相关的所有类。D:包含Spring框架基本的核心工具类,Spring其它组件都要用到这个包里的类,是其它组件的基本核心。3.以下有关Spring框架优点的说法正确的是。()A:Spring具有简单、可测试和松耦合等特点,从这个角度出发,Spring就是应用于任何Java应用的开发中;B:Spring提供了对AOP的支持,它允许将一些通用任务,如安全、事务、日志等进行集中式处理,从而提高了程序的复用性C:Spring就是一个大工厂,可以将所有对象的创建和依赖关系的维护工作都交给Spring容器管理,杜绝了组件之间的耦合性D:Spring增加了JavaEE开发中一些API的使用难度4.Spring的核心容器是其他模块建立的基础,以下哪个不是该容器的组成模块。()A:Beans模块B:Core模块C:Context模块D:AOP模块5.下列选项中,不属于Spring框架优点的是。()A:提供强大的、可以有效减少页面代码的标签B:声明式事务的支持。C:方便解耦、简化开发D:方便集成各种优秀框架四、简答题1.Spring依赖注入通常有哪些实现方式,列举并分别进行说明。答案一、填空题1.Bean2.Spring容器3.commons-logging4.生命周期5.Spring框架包、第三方依赖包二、判断题1.对2.错3.对4.对5.对三、选择题1.A2.D3.B4.D5.A四、简答题Spring的实现方式通常有两种,一种是属性setter方法注入,另一种是构造方法注入。属性setter方法注入是指IoC容器使用setter方法来注入被依赖的实例。通过调用无参构造器或无参静态工厂方法实例化Bean后,调用该Bean的setter方法,即可实现基于setter方法的依赖注入。构造方法注入是指IoC容器使用构造方法来注入被依赖的实例。基于构造方法的依赖注入通过调用带参数的构造方法来实现,每个参数代表着一个依赖。第2章Spring中的Bean习题一、填空题1.所谓自动装配,就是将一个Bean自动的注入到到其他Bean的【】中。2.@Controller通常作用在控制层,如SpringMVC的【】,用于将控制层的类标识为Spring中的Bean,其功能与@Component相同。3.【】注解用于将数据访问层(DAO层)的类标识为Spring中的Bean,其功能与@Component相同。4.对于【】作用域的Bean,Spring只负责创建,当容器创建了Bean实例后,Bean的实例就交给客户端代码来管理,Spring容器将不再跟踪其生命周期。5.实例工厂方式采用直接创建Bean实例的方式,在配置文件中,需要实例化的Bean是通过【】属性指向配置的实例工厂,然后使用factory-method属性确定使用工厂中的哪个方法。二、判断题1.@Component注解用于描述Spring中的Bean,它是一个泛化的概念,仅仅表示一个组件,并且可以作用在任何层次,使用时只需将该注解标注在相应方法上即可。()2.Spring提供了3种基于XML的装配方式:设值注入、构造注入和属性注入。()3.每次客户端请求singleton作用域的Bean时,Spring容器都会创建一个新的实例,并且不会管那些被配置成singleton作用域的Bean的生命周期。()4.Spring中使用prototype定义的Bean在Spring容器中将只有一个实例,也就是说,无论有多少个Bean引用它,始终将指向同一个对象。()5.对于prototype作用域的Bean,Spring只负责创建,当容器创建了Bean实例后,Bean的实例就交给客户端代码来管理,Spring容器将不再跟踪其生命周期。()三、选择题1.Spring的bean元素中的autowire属性取值不包括以下。()A:defaultB:byNameC:byTypeD:byId2.以下有关Bean的装配方式说法正确的是。()A:Spring容器支持多种形式的Bean的装配方式,如基于XML的装配、基于注解(Annotation)的装配和自动装配(其中最常用的是基于XML的装配);B:Spring提供了3种基于XML的装配方式:设值注入、构造注入和属性注入;C:在Spring实例化Bean的过程中,Spring首先会调用Bean的默认构造方法来实例化Bean对象,然后通过反射的方式调用setter方法来注入属性值;D:设值注入要求一个Bean必须提供一个有参构造方法并且为需要注入的属性提供对应的setter方法。3.以下哪些不属于Spring版本中Bean的作用域。()A:applicationB:requestC:responseD:globalSession4.Spring中定义了一系列的注解,以下有关其常用的注解说明错误的是。()A:@Autowired用于对Bean的属性变量、属性的setter方法及构造方法进行标注,配合对应的注解处理器完成Bean的自动配置工作,默认按照Bean的名称进行装配。B:@Repository用于将数据访问层(DAO层)的类标识为Spring中的Bean。C:@Service通常作用在业务层(Service层),用于将业务层的类标识为Spring中的Bean。D:@Controller通常作用在控制层(如SpringMVC的Controller),用于将控制层的类标识为Spring中的Bean。5.下列选项中,不属于Spring中实例化Bean的方式的是。()A:构造器实例化B:静态工厂方式实例化C:实例工厂方式实例化D:抽象方法实例化四、简答题1.请简述基于XML的装配方式中设值注入的要求。答案一、填空题1.Property2.Controller3.@Repository4.prototype5.factory-bean二、判断题1.错2.错3.错4.错5.对三、选择题1.D2.C3.C4.A5.D四、简答题Spring中基于XML的装配方式中设值注入需要满足以下两点要求:1、Bean类必须提供一个默认的无参构造方法。2、Bean类必须为需要注入的属性提供对应的setter方法。第3章SpringAOP习题一、填空题1.AspectJ框架中注解【】用于定义切入点表达式,在使用时还需定义一个包含名字和任意参数的方法签名来表示切入点名称。2.在Spring配置文件中,aop:aspect子元素的pointcut-ref属性用于指定一个已经存在的【】。3.在Spring的配置文件中,配置切面使用的是【】元素。4.在Spring中,使用【】是创建AOP代理的基本方式。5.AOP术语中【】表示AOP框架在特定的切入点执行的增强处理,即在定义好的切入点处所要执行的程序代码。二、判断题1.如果在同一个连接点有多个通知需要执行,那么在同一切面中,目标方法之前的前置通知和环绕通知的执行顺序是未知的,目标方法之后的后置通知和环绕通知的执行顺序也是未知的。()2.AspectJ框架中的注解@After用于定义最终final通知,不管是否异常,该通知都会执行。()3.Spring配置文件中的beans元素下可以包含多个aop:config元素,一个aop:config元素中又可以包含属性和子元素,其子元素包括aop:pointcut、aop:advisor和aop:aspect。()4.Spring中的AOP代理默认就是使用CGLIB代理的方式来实现的。()5.Spring以后,SpringAOP引入了对AspectJ的支持,并允许直接使用AspectJ进行编程,而Spring自身的AOPAPI也尽量与AspectJ保持一致。()三、选择题1.以下不属于ProxyFactoryBean类中的常用可配置属性的是。()A:targetB:proxyInterfacesC:targetClassD:interceptorNames2.以下哪种类型不是Spring中的通知类型。()A:异常通知B:前置通知C:后置通知D:最终通知3.关于AspectJ注解的介绍,说法错误的是。()A:@Aspect用于定义一个切面B:@Pointcut用于定义切入点表达式C:@Before用于定义前置通知,相当于BeforeAdviceD:@After用于定义后置通知,相当于AfterReturningAdvice4.以下有关CGLIB代理相关说法正确的是。()A:CGLIB代理的使用非常简单,但它还有一定的局限性——使用动态代理的对象必须实现一个或多个接口。B:如果要对没有实现接口的类进行代理,那么可以使用CGLIB代理。C:CGLIB是一个高性能开源的代码生成包,在使用时需要另外导入CGLIB所需要的包。D:Spring中的AOP代理,可以是JDK动态代理,也可以是CGLIB代理。5.以下关于SpringAOP的介绍错误的是。()A:AOP的全称是Aspect-OrientedProgramming,即面向切面编程(也称面向方面编程)。B:AOP采取横向抽取机制,将分散在各个方法中的重复代码提取出来,这种采用横向抽取机制的方式,采用OOP思想是无法办到的。C:虽然AOP是一种新的编程思想,采取横向抽取机制,是OOP的升级替代品。D:目前最流行的AOP框架有两个,分别为SpringAOP和AspectJ。四、简答题1.请对Spring的通知类型进行简要说明。答案一、填空题1.@Pointcut2.切入点名称3.aop:aspect4.ProxyFactoryBean5.Advice二