**夕瑶不会java**
第1章 Spring的基本应用
习题
一、 填空题
- 依赖注入的作用就是在使用Spring框架创建对象时,动态的将其所依赖的对象注入到【 】组件中。
- 在使用Spring框架之后,对象的实例不再由调用者来创建,而是由【 】来创建,Spring容器会负责控制程序之间的关系,而不是由调用者的程序代码直接控制。
- 在Spring入门程序中只需将Spring的4个基础包以及【 】的JAR包复制到lib目录中,并发布到类路径下即可。
- 简单来说,BeanFactory就是一个管理Bean的工厂,它主要负责初始化各种Bean,并调用它们的【 】方法。
- Spring开发所需的JAR包分为两个部分:【 】和【 】。
二、 判断题 - Spring中基于构造方法的依赖注入通过调用带参数的构造方法来实现,每个参数代表着一个依赖。( )
- 通常在Java项目中,会采用通过FileSystemXmlApplicationContext类来实例化ApplicationContext容器的方式。( )
- 初学者学习Spring框架时,只需将Spring的4个基础包以及commons-logging.jar复制到项目的lib目录,并发布到类路径中即可。( )
- 依赖注入的作用就是在使用Spring框架创建对象时,动态的将其所依赖的对象注入到Bean组件中。( )
- Spring框架采用的是分层架构,它一系列的功能要素被分成20个模块。( )
三、 选择题 - 以下关于Spring核心容器相关说法错误的是。( )
A: Spring框架的所有功能都是通过其核心容器来实现的。
B: 创建BeanFactory实例时,需要提供Spring所管理容器的详细配置信息,这些信息通常采用XML文件形式来管理。
C: ApplicationContext不仅包含了BeanFactory的所有功能,还添加了对国际化、资源访问、事件传播等方面的支持。
D: 通常在Java项目中,会采用通过ClassPathXmlApplicationContext类来实例化ApplicationContext容器的方式,而在Web项目中,ApplicationContext容器的实例化工作会交由Web服务器来完成。 - 以下有关Spring的四个基础包说法正确的是。( )
A: Spring的四个基础包,它们分别对应Spring Web容器的四个模块。
B: Spring的四个基础包有spring-core.RELEASE.jar、spring-beans-.RELEASE.jar、spring-context-.RELEASE.jar和spring-aop-.RELEASE.jar。
C: spring-context-.RELEASE.jar是所有应用都要用到的JAR包,它包含访问配置文件以及进行IoC或者DI操作相关的所有类。
D: spring-core.RELEASE.jar包含Spring框架基本的核心工具类,Spring其它组件都要用到这个包里的类,是其它组件的基本核心。 - 以下有关Spring框架优点的说法正确的是。( )
A: Spring具有简单、可测试和松耦合等特点,从这个角度出发,Spring就是应用于任何Java应用的开发中;
B: Spring提供了对AOP的支持,它允许将一些通用任务,如安全、事务、日志等进行集中式处理,从而提高了程序的复用性
C: Spring就是一个大工厂,可以将所有对象的创建和依赖关系的维护工作都交给Spring容器管理,杜绝了组件之间的耦合性
D: Spring增加了Java EE开发中一些API的使用难度 - Spring的核心容器是其他模块建立的基础,以下哪个不是该容器的组成模块。( )
A: Beans模块
B: Core模块
C: Context模块
D: AOP模块 - 下列选项中,不属于Spring框架优点的是。( )
A: 提供强大的、可以有效减少页面代码的标签
B: 声明式事务的支持。
C: 方便解耦、简化开发
D: 方便集成各种优秀框架
四、 简答题 - Spring依赖注入通常有哪些实现方式,列举并分别进行说明。
答案
一、 填空题 - Bean
- Spring容器
- commons-logging
- 生命周期
- Spring框架包、第三方依赖包
二、 判断题 - 对
- 错
- 对
- 对
- 对
三、 选择题 - A
- D
- B
- D
- A
四、 简答题
Spring的实现方式通常有两种,一种是属性setter方法注入,另一种是构造方法注入。属性setter方法注入是指IoC容器使用setter方法来注入被依赖的实例。通过调用无参构造器或无参静态工厂方法实例化Bean后,调用该Bean的setter方法,即可实现基于setter方法的依赖注入。构造方法注入是指IoC容器使用构造方法来注入被依赖的实例。基于构造方法的依赖注入通过调用带参数的构造方法来实现,每个参数代表着一个依赖。
第2章 Spring中的Bean
习题
一、 填空题 - 所谓自动装配,就是将一个Bean自动的注入到到其他Bean的【 】中。
- @Controller通常作用在控制层,如Spring MVC的【 】,用于将控制层的类标识为Spring中的Bean,其功能与@Component 相同。
- 【 】注解用于将数据访问层(DAO层)的类标识为Spring中的Bean,其功能与@Component 相同。
- 对于【 】作用域的Bean,Spring只负责创建,当容器创建了Bean实例后,Bean的实例就交给客户端代码来管理,Spring容器将不再跟踪其生命周期。
- 实例工厂方式采用直接创建Bean实例的方式,在配置文件中,需要实例化的Bean是通过【 】属性指向配置的实例工厂,然后使用factory-method属性确定使用工厂中的哪个方法。
二、 判断题 - @Component注解用于描述Spring中的Bean,它是一个泛化的概念,仅仅表示一个组件,并且可以作用在任何层次,使用时只需将该注解标注在相应方法上即可。( )
- Spring提供了3种基于XML的装配方式:设值注入、构造注入和属性注入。( )
- 每次客户端请求singleton作用域的Bean时,Spring容器都会创建一个新的实例,并且不会管那些被配置成singleton作用域的Bean的生命周期。( )
- Spring中使用prototype定义的Bean在Spring容器中将只有一个实例,也就是说,无论有多少个Bean引用它,始终将指向同一个对象。( )
- 对于prototype作用域的Bean,Spring只负责创建,当容器创建了Bean实例后,Bean的实例就交给客户端代码来管理,Spring容器将不再跟踪其生命周期。( )
三、 选择题 - Spring的元素中的autowire属性取值不包括以下。( )
A: default B: byName C: byType D: byId - 以下有关Bean的装配方式说法正确的是。( )
A: Spring容器支持多种形式的Bean的装配方式,如基于XML的装配、基于注解(Annotation)的装配和自动装配(其中最常用的是基于XML的装配);
B: Spring提供了3种基于XML的装配方式:设值注入、构造注入和属性注入;
C: 在Spring实例化Bean的过程中,Spring首先会调用Bean的默认构造方法来实例化Bean对象,然后通过反射的方式调用setter方法来注入属性值;
D: 设值注入要求一个Bean必须提供一个有参构造方法并且为需要注入的属性提供对应的setter方法。 - 以下哪些不属于Spring 4.3版本中Bean的作用域。( )
A: application B: request C: response D: globalSession - Spring中定义了一系列的注解,以下有关其常用的注解说明错误的是。( )
A: @Autowired用于对Bean的属性变量、属性的setter方法及构造方法进行标注,配合对应的注解处理器完成Bean的自动配置工作,默认按照Bean的名称进行装配。
B: @Repository用于将数据访问层(DAO层)的类标识为Spring中的Bean。
C: @Service通常作用在业务层(Service层),用于将业务层的类标识为Spring中的Bean。
D: @Controller通常作用在控制层(如Spring MVC的Controller),用于将控制层的类标识为Spring中的Bean。 - 下列选项中,不属于Spring中实例化Bean的方式的是。( )
A: 构造器实例化 B: 静态工厂方式实例化
C: 实例工厂方式实例化 D: 抽象方法实例化
四、 简答题 - 请简述基于XML的装配方式中设值注入的要求。
答案
一、 填空题 - Property
- Controller
- @Repository
- prototype
- factory-bean
二、 判断题 - 错
- 错
- 错
- 错
- 对
三、 选择题 - D
- C
- C
- A
- D
四、 简答题
Spring中基于XML的装配方式中设值注入需要满足以下两点要求:
1、Bean类必须提供一个默认的无参构造方法。
2、Bean类必须为需要注入的属性提供对应的setter方法。
第3章 Spring AOP
习题
一、 填空题 - AspectJ框架中注解【 】用于定义切入点表达式,在使用时还需定义一个包含名字和任意参数的方法签名来表示切入点名称。
- 在Spring配置文件中,aop:aspect子元素的pointcut-ref属性用于指定一个已经存在的【 】。
- 在Spring的配置文件中,配置切面使用的是【 】元素。
- 在Spring中,使用【 】是创建AOP代理的基本方式。
- AOP术语中【 】表示AOP框架在特定的切入点执行的增强处理,即在定义好的切入点处所要执行的程序代码。
二、 判断题 - 如果在同一个连接点有多个通知需要执行,那么在同一切面中,目标方法之前的前置通知和环绕通知的执行顺序是未知的,目标方法之后的后置通知和环绕通知的执行顺序也是未知的。( )
- AspectJ框架中的注解@After用于定义最终final通知,不管是否异常,该通知都会执行。( )
- Spring配置文件中的元素下可以包含多个aop:config元素,一个aop:config元素中又可以包含属性和子元素,其子元素包括aop:pointcut、aop:advisor和aop:aspect。( )
- Spring中的AOP代理默认就是使用CGLIB代理的方式来实现的。( )
- Spring 3.0以后,Spring AOP引入了对AspectJ的支持,并允许直接使用AspectJ进行编程,而Spring自身的AOP API也尽量与AspectJ保持一致。( )
三、 选择题 - 以下不属于ProxyFactoryBean类中的常用可配置属性的是。( )
A: target
B: proxyInterfaces
C: targetClass
D: interceptorNames - 以下哪种类型不是Spring中的通知类型。( )
A: 异常通知
B: 前置通知
C: 后置通知
D: 最终通知 - 关于AspectJ注解的介绍,说法错误的是。( )
A: @Aspect用于定义一个切面
B: @Pointcut用于定义切入点表达式
C: @Before用于定义前置通知,相当于BeforeAdvice
D: @After用于定义后置通知,相当于AfterReturningAdvice - 以下有关CGLIB代理相关说法正确的是。( )
A: CGLIB代理的使用非常简单,但它还有一定的局限性——使用动态代理的对象必须实现一个或多个接口。
B: 如果要对没有实现接口的类进行代理,那么可以使用CGLIB代理。
C: CGLIB是一个高性能开源的代码生成包,在使用时需要另外导入CGLIB所需要的包。
D: Spring中的AOP代理,可以是JDK动态代理,也可以是CGLIB代理。 - 以下关于Spring AOP 的介绍错误的是。( )
A: AOP的全称是Aspect-Oriented Programming,即面向切面编程(也称面向方面编程)。
B: AOP采取横向抽取机制,将分散在各个方法中的重复代码提取出来,这种采用横向抽取机制的方式,采用OOP思想是无法办到的。
C: 虽然AOP是一种新的编程思想,采取横向抽取机制,是OOP的升级替代品。
D: 目前最流行的AOP框架有两个,分别为Spring AOP和AspectJ。
四、 简答题 - 请对Spring的通知类型进行简要说明。
答案
一、 填空题 - @Pointcut
- 切入点名称
- aop:aspect
- ProxyFactoryBean
- Advice
二、 判断题 - 对
- 对
- 对
- 错
- 错
三、 选择题 - C
- D
- D
- C
- C
四、 简答题
Spring中主要包含5种通知类型,分别是环绕通知,前置通知,后置通知,异常通知和引介通知。其中,环绕通知表示在目标方法执行前后实施增强,可以应用于日志、事务管理等功能。前置通知表示在目标方法执行前实施增强,可以应用于权限管理等功能。后置通知表示在目标方法执行后实施增强,可以应用于关闭流、上传文件、删除临时文件等功能。异常通知表示在方法抛出异常后实施增强,可以应用于处理异常记录日志等功能。引介通知表示在目标类中添加一些新的方法和属性,可以应用于修改老版本程序(增强类)。
第4章 Spring的数据库开发
习题
一、 填空题 - JdbcTemplate类中还提供了大量的【 】方法来处理各种对数据库表的查询操作。
- JdbcTemplate类中的【 】方法可以完成插入、更新和删除数据的操作。
- 【 】就是Junit4用来测试的注解,要测试哪个方法,只需要在相应测试的方法上添加此注解即可。
- JDBC连接数据库时需要4个基本属性,包括有【 】、url、username和password。
- JdbcTemplate类的继承关系十分简单。它继承自抽象类【 】,同时实现了JdbcOperations接口。
二、 判断题 - 在使用Junit进行单一测试时,JUnit视图窗口的进度条为绿色表明运行结果正确;如果进度条为红色则表示有错误,并且会在窗口中显示所报的错误信息。( )
- 定义jdbcTemplate时,需要将dataSource注入到jdbcTemplate中。( )
- JdbcOperations接口定义了在JdbcTemplate类中可以使用的操作集合,包括添加、修改、查询和删除等操作。( )
- JdbcTemplate类中还提供了大量的query()方法来处理各种对数据库表的查询操作。( )
- 在JdbcTemplate类中,提供了大量的更新和查询数据库的方法,我们就是使用的这些方法来操作数据库的。( )
三、 选择题