前言
Java EE这是一门偏向于实践的课,奈何考试理论居多。一学期想搞懂三个框架,嘿嘿,难哦!如果你是大一大二的同学,认认真真学习,真的有用。如果你是大三的同学,像就业并且走这个方向的同学,也认真学习。如果你大三考研的同学,自己安排时间。这里是我平时的五个作业,建立成一个题库供大家搜索。里面的答案部分很怪,但就是给的标答,大家可以找老师商讨。使用法则:Ctrl + F 键搜索你需要的题目。
作业一 初识 Mybatis
单选题
1.下面关于MyBatis提供的用于解决JDBC编程劣势的方案,说法错误的是()。
A、在SqlMapConfig.xml中配置数据链接池,使用连接池管理数据库链接
B、MyBatis将SQL语句配置在MyBatis的映射文件中,未与Java代码的分离
C、MyBatis自动将Java对象映射至SQL语句,通过Statement中的parameterType定义输入参数的类型
D、MyBatis自动将SQL执行结果映射至Java对象,通过Statement中的resultType定义输出结果的类型
1 参考答案:B
【答案解析】
MyBatis将SQL语句配置在MyBatis的映射文件中,实现了与Java代码的分离。
2、下面关于映射文件中的元素的属性,说法正确的是()。
A、parameterType属性的值表示的是返回的实体类对象
B、namespace属性的值通常设置为对应实体类的全限定类名
C、resultType属性的值表示传入的参数类型
D、以上说法都不正确
2 参考答案 B
【答案解析】
parameterType属性的值表示传入的参数类型,resultType属性的值表示的是返回实体类对象,使用包.类名
3.下列选项中,关于MyBatis的配置说法正确的是()
A、Mapper.xml核心配置文件主要配置了MyBatis 的运行环境等信息。
B、mybatis-config.xml中配置了操作数据库的SQL 语句。
C、通过MyBatis的环境等配置信息可以直接构建会话工厂SqlSession。
D、MyBatis可以加载多个映射文件,每个映射文件对应数据库中的一张表。
3 参考答案:D
【答案解析】
1.mybatis-config.xml 核心配置文件主要配置了 MyBatis 的运行环境等信息。
2.Mapper.xml 文件配置了操作数据库的 SQL 语句,需要在 mybatis-config.xml 中加载才能执行。mybatis-config.xml 可以加载多个映射文件,每个映射文件对应数据库中的一张表。
3.通过 MyBatis 的环境等配置信息构建会话工厂 SqlSessionFactory,用于创建 SqlSession。
4.下面关于MyBatis框架的说法,正确的是()。
A、MyBatis是一个半自动映射的框架,这里所谓的“半自动”是相对于Hibernate全表映射而言的
B、MyBatis 是一个业务逻辑层的框架
C、MyBatis的封装性要比Hibernate高
D、MyBatis是一个全表映射的框架
4 参考答案:A
【答案解析】
MyBatis 本是Apache的一个开源项目iBatis,2010年这个项目由Apache Software Foundation迁移到了Google Code,并且改名为MyBatis ,2013年11月MyBatis又被迁移到Github。MyBatis是一个优秀的持久层框架,它可以在实体类和SQL语句之间建立映射关系,是一种半自动化的ORM(Object/Relation Mapping,即对象关系映射)实现。MyBatis封装性要低于Hibernate,但它性能优越、简单易学,在互联网应用的开发中被广泛使用。
5.有关MyBatis工作原理说法错误的是()。
A、MyBatis的全局配置文件配置了MyBatis的运行环境等信息,其中主要内容是获取数据库连接
B、MyBatis映射文件中配置了操作数据库的SQL语句,需要在MyBatis的全局配置文件中加载才能执行
C、可以通过MyBatis的环境等配置信息构建会话对象SqlSession
D、SqlSession对象,该对象中包含了执行SQL的所有方法
5 参考答案: C
【答案解析】
通过MyBatis的环境等配置信息构建的是会话工厂SqlSessionFactory
6.在传统JDBC编程中,SQL变动需要改变Java代码,违反了开闭原则。下面哪个方法可以解决这个问题?()
A、MyBatis将SQL语句配置在MyBatis的映射文件中,实现了与Java代码的分离
B、MyBatis自动将Java对象映射至SQL语句,通过Statement中的parameterType定义输入参数的类型
C、MyBatis自动将SQL执行结果映射至Java对象,通过Statement中的resultType定义输出结果的类型
D、以上说法都不正确
6 参考答案: A
7.使用ORM框架后,应用程序不再直接访问底层数据库,而是以()的方式来操作持久化对象(PO,即Persisent Object)。
A、面向业务
B、Hibernate
C、面向对象
D、MyBatis
7 参考答案: C
多选题
8、MappedStatement对象会对用户执行SQL语句的输入参数进行定义,这些参数类型可以是()。
A、Map类型
B、List类型
C、基本类型
D、OPJO类型
8 参考答案: A,B,C,D
9、下列选项中,对使用MyBatis编程的好处说法正确的是()。
A、不用配置数据连接池,也可以高效的管理数据库连接。
B、实现了SQL与Java 代码的分离。
C、自动将SQL执行结果映射至Java对象。
D、自动将Java对象映射至 SQL语句。
9 参考答案: B,C,D
10、下面关于使用框架的优势,说法正确的是( )。
A、提高开发效率
B、提高代码规范性和可维护性
C、提高软件性能
D、不用对程序进行扩展
10 参考答案: A,B,C
11、
下列选项中,对传统JDBC 编程的劣势说法正确的是()。
A、频繁地创建、释放数据库连接会造成系统资源浪费,从而影响系统性能。
B、语句硬编码,会造成代码不易于维护。
C、使用 PreparedStatement 向占位符传参数存在硬编码,导致系统难以维护。
D、JDBC 对结果集解析存在硬编码,使得系统不易于维护。
11 参考答案: A,B,C,D
判断题
- 软件框架会包含支撑程序、编译器、代码、库、工具集以及API,它把所有这些部件汇集在一起,以支持项目或系统的开发。
12 参考答案: 对
13、Mapper.xml文件配置了操作数据库的SQL语句,需要在 mybatis-config.xml中加载才能执行。
13 参考答案: 对
14、软件框架是一种通用的、可复用的软件环境,它提供特定的功能,促进软件应用、产品和解决方案的开发工作
14 参考答案: 对
- MyBatis框架可以在实体类和SQL语句之间建立映射关系,是一种半自动化的ORM实现。
15 参考答案: 对
16、MyBatis映射文件主要用于实现SQL语句和Java对象之间的映射,使SQL语句查询出来的关系型数据能够被封装成Java对象。
16 参考答案: 对
17、Mapper.xml文件中配置了操作数据库的SQL语句,需要在mybatis-config.xml中加载才能执行。
17 参考答案: 对
18、
如果一个项目有多个映射文件,则mybatis-config.xml核心配置文件中需要在元素下配置多个元素指定映射文件的路径。
18 参考答案: 对
- 在传统JDBC编程中,SQL变动需要改变Java代码,违反了开闭原则。
19 参考答案: 对
20、MyBatis映射文件中元素是配置文件的根元素,它包含一个namespace属性,该属性为这个指定了唯一的命名空间。
参考答案: 错
【答案解析】
<mapper
>元素是配置文件的根元素
填空题
- MyBatis由会话工厂
SqlSessionFactory
创建SqlSession对象,该对象中包含了执行SQL的所有方法。
22、MyBatis框架是一个ORM即对象关系映射
框架。
23、MyBatis的核心配置文件可以随意命名,但通常将其命名为mybatis-config.xml
。
24、mybatis-config.xml
核心配置文件主要配置了MyBatis的运行环境等信息。
25、< mapper >元素包含的namespace
属性为这个< mapper >指定了唯一的命名空间。
作业二 Mybatis 框架中的元素讲解
单选题
1、下列元素中,属于MyBatis配置文件的根元素的是()。
A、< mappers >元素
B、< dataSource >元素
C、< configuration >元素
D、< settings >元素
1 参考答案: C
2、下列元素中,不属于<environments>元素的子元素的是()。
A、<environment>
B、<dataSource>
C、<transactionManager>
D、<plugins>
2 参考答案: D
3、关于SqlSession对象的查询方法返回的结果类型,正确的是()。
A、泛型对象的Set集合
B、泛型对象的List集合
C、泛型对象的Map集合
D、以上说法都正确
3 参考答案: B
4、下列属性中,属于<select>元素中表示结果集的类型是()。
A、keyProperty
B、keyColumn
C、resultSetType
D、useGeneratedKeys
4 参考答案:C
【答案解析】
A、B、D选项是和元素的属性。
5、以下关于<select>元素及其属性说法错误的是()。
A、<select>元素用来映射查询语句,它可以帮助我们从数据库中读取出数据,并组装数据给业务开发人员
B、parameterType属性表示传入SQL语句的参数类的全限定名或者别名
C、resultMap表示外部resultMap的命名引用,返回时可以同时使用resultType和resultMap
D、在同一个映射文件中可以配置多个<select>元素
5 参考答案:C
【答案解析】
返回时可以使用resultType或resultMap之一
6、下列关于<insert>元素的statementType属性的取值,错误的是()。
A、STATEMENT
B、DEFAULT(默认值)
C、CALLABLE
D、PREPARED(默认值)
6 参考答案: B
7、以下有关MyBatis映射文件中<insert>元素说法正确的是()。
A、<insert>元素用于映射插入语句,在执行完元素中定义的SQL语句后,没有返回结果
B、<insert>元素的属性与<select>元素的属性相同
C、keyColumn属性用于设置第几列是主键,当主键列不是表中的第一列时需要设置
D、useGeneratedKeys(仅对insert有用)此属性会使MyBatis使用JDBC的getGeneratedKeys()方法来获取由数据库内部生产的主键
7 参考答案:C
【答案解析】A选项,会返回插入记录的数量;B、D选项,keyProperty,keyColumn,useGeneratedKeys这三个属性只对<insert>和<update>元素有效;其中,useGeneratedKeys属性会使MyBatis调用JDBC的getGeneratedKeys()方法来获取由数据库内部生产的主键;
8、下列关于<mapper>元素的说法正确的是()。
A、<mapper>元素的namespace属性是不唯一的
B、<mapper>元素的namespace属性值的命名不一定跟接口同名
C、<mapper>元素不是映射文件的根元素
D、<mapper>元素是映射文件的根元素
8 参考答案:D
【答案解析】
<mapper>元素是映射文件的根元素,该元素只有一个namespace属性(命名空间),namespace属性值的命名必须跟接口同名。
9、以下有关<properties>元素说法错误的是()。
A、<properties>是一个配置属性的元素,该元素的作用是读取外部文件的配置信息
B、使用<property… />元素配置数据库驱动、连接数据库的URL、连接数据库的用户名和连接数据库的密码等数据库连接参数
C、<properties>元素可以通过db.properties文件实现静态参数配置
D、以上说法都正确
9 参考答案: C
【答案解析】
<properties>元素可以通过db.properties文件实现动态参数配置
10、假设有一个名称为UserMapper的XML文件,下列关于使用类路径引入映射文件的示例代码正确的是()。
A、<mappers><mapper resource=“com/itheima/mapper/UserMapper.xml”/></mappers>
B、<mappers><mapper resource=“com/itheima/mapper/UserMapper”/></mappers>
C、<mapper resource=“com/itheima/mapper/UserMapper.xml”/>
D、以上说法都不正确
10 参考答案:A
多选题
11、以下有关SqlSession对象的说明正确的是()。
A、SqlSession是MyBatis框架中另一个重要的对象,其主要作用是执行持久化操作
B、每一个线程都应该有一个自己的SqlSession实例,并且该实例是不能被共享的
C、SqlSession实例也是线程不安全的,因此其使用范围最好在一次请求或一个方法中
D、使用完SqlSession对象之后,要及时的关闭它,通常可以将其放在finally块中关闭
11 参考答案:A,B,C,D
12、有关<resultMap>元素的说法正确的是()。
4分
A、<resultMap>元素的主要作用是定义映射规则、级联的更新以及定义类型转化器等
B、当数据表中的列和对象的属性不一致时,此时就可以使用<resultMap>元素进行处理
C、<resultMap>元素中的<association>和<collection>用于处理多表时的关联关系
D、以上说法都正确
12 参考答案: A,B,C,D
13、下列属于SqlSessionFactoryBuilder构建SqlSessionFactory对象的build()方法的是()。
A、build(InputStream inputStream,String environment,Properties properties)
B、build(Reader reader,String environment,Properties properties)
C、build()
D、build(Configuration config)
13 参考答案:A,B,D
14、关于<environments>元素及其子元素的说法正确的是()。
A、在配置文件中,<environments>元素用于对环境进行配置
B、在<environments>元素中可以配置1个<environment>子元素,包含事务管理和数据源的配置信息
C、<environment>的子元素<dataSource>用于配置数据源,它的type属性用于指定使用哪种数据源
D、可通过<environments>元素配置多种数据源,MyBatis框架提供了三种数据源类型
14 参考答案:A,C,D
【答案解析】
<environments>元素有两个子元素,<transactionManager>元素和<daraSource>元素,分别表示配置运行环境的事务管理器和配置运行环境的数据源信息。
15、下列选项中,可以通过<mappers>元素引入映射文件的方法的是()。
A、使用类路径引入
B、使用本地文件路径引入
C、使用接口类引入
D、使用包名引入
15 参考答案:A,B,C,D
判断题
16、与<insert>元素一样,<update>和<delete>元素在执行完之后,也会返回一个表示影响记录条数的整数。
参考答案: 对
17、SqlSession对象是应用程序与持久层之间执行交互操作的一个单线程对象,主要作用是执行持久化操作。
参考答案: 对
18、SqlSession对象是线程不安全的。
参考答案: 对
19、SqlSessionFactory对象是线程安全的,它一旦被创建,在整个应用程序执行期间都会存在。
参考答案:对
20、<configuration>的子元素必须按照指定的顺序进行配置,否则MyBatis在解析XML配置文件的时候会报错。
参考答案:对
21、<delete>元素中有3个键值相关的属性,分别是keyProperty、keyColumn和useGeneratedKeys。
参考答案:错
【答案解析】
keyProperty,keyColumn,useGeneratedKeys这三个属性只对<insert>和<update>元素有效。
22、POOLED数据源的poolMaximumActiveConnections属性,默认值为1。
参考答案:错
【答案解析】
poolMaximumActiveConnections属性表示在任意时间可以存在的活动(也就是正在使用)连接数量,默认值为10。
23、<mappers>元素是映射文件的根元素,该元素只有一个namespace属性。
参考答案:错
【答案解析】
<mapper>元素是映射文件的根元素。
24、<delete>元素的parameterType属性是一个可选属性,默认值为unset。
参考答案: 对
25、SqlSessionFactory对象的openSession()方法的参数为boolean值时,默认为false。
参考答案: 错
【答案解析】
SqlSessionFactory对象的openSession()方法的参数为boolean值时,若传入true表示关闭事务控制,自动提交;若传入false表示开启事务控制。若不传入参数,默认为true。
作业三 Mybatis 框架
单选题
1、下列属性中,不属于<association>元素属性的是()。
A、property
B、select
C、ofType
D、autoMapping
参考答案:C
2、以下关于<association>元素中常用属性说法错误的是()。
A、property指定映射到的实体类对象属性,与表字段一一对应
B、column指定表中对应的字段
C、fetchType指定在关联查询时是否启用延迟加载,默认值为eager
D、javaType指定映射到实体对象属性的类型
参考答案:C
【答案解析】
fetchType属性有lazy和eager两个属性值,默认值为lazy(即默认关联映射延迟加载)。
3、下列关于<collection>元素的描述正确的是()。
A、MyBatis就是通过<collection>元素来处理一对多关联关系的
B、元素的属性与<association>元素完全相同
C、ofType属性与javaType属性对应,它用于指定实体对象中所有属性所包含的元素类型
D、元素只能使用嵌套查询方式
参考答案:A
【答案解析】
<collection>元素的属性大部分与<association>元素相同,但其还包含一个特殊属性ofType。ofType属性与javaType属性对应,它用于指定实体类对象中集合类属性所包含的元素的类型。<collection>元素也是<resultMap>元素的子元素,它也有嵌套查询和嵌套结果两种配置方式。
4、下列关于MyBatis映射文件中加载关联关系对象的方式说法正确的是()。
A、嵌套结果是指通过执行另外一条SQL映射语句来返回预期的复杂类型
B、嵌套结果是使用嵌套结果映射来处理重复的联合结果的子集
C、嵌套查询是使用嵌套结果映射来处理重复的联合结果的子集
D、以上说法都正确
参考答案:B
多选题
5、下列属性中,属于<association>和<collection>元素共有的属性是()。
A、property
B、select
C、ofType
D、autoMapping
参考答案:A,B,D
【答案解析】
C选项是<collection>元素特有的属性。
判断题
6、在MyBatis中,通过<association>元素可以处理一对多关联关系。
参考答案: 错
【答案解析】
处理的是一对一关联关系。
7、<association>元素只有一种配置方式,即嵌套结果方式。
参考答案: 错
【答案解析】
<association>元素的使用非常简单,它有两种配置方式,嵌套查询方式和嵌套结果方式。
8、当表中的列名与对应对象的属性名称完全一致时,在查询映射文件中可以不使用resultMap属性。
参考答案: 对
9、MyBatis中,默认开启了延迟加载。
参考答案: 错
【答案解析】
MyBatis默认没有开启延迟加载,需要在核心配置文件mybatis-config.xml中的<settings>元素内进行配置。
10、MyBatis中多对多关联映射同样有嵌套查询和嵌套结果两种关联方式。
参考答案: 对
填空题
注意这里的填空题很怪的:答案给的是这个,但是得分为0,像这样。
11、在MyBatis中,使用<collection>
元素可以处理一对多关联关系。
12、在MyBatis中,通过<association>
元素可以处理一对一关联关系。
13、<association>元素的select
属性用于指定引入嵌套查询的子SQL语句。
14、在使用<association>元素时,它的fetchType属性有lazy
和eager两个属性值。
15、<collection>元素的属性中,用于指定实体类对象中集合类属性所包含的元素类型的是ofType
。
作业四 Spring 框架
单选题
1、下列AOP专业术语中,用于表示切面与连接点的交叉点的是( )。
A、Joinpoint
B、Pointcut
C、Aspect
D、Advice
参考答案:B
【答案解析】
当某个连接点满足预先指定的条件时,AOP就能够定位到这个连接点,在连接点处插入切面,该连接点也就变成了切入点。
2、以下有关依赖注入说法错误的是()。
A、依赖注入(DI)与控制反转(IoC)的含义不同,描述不同的概念
B、在传统模式下,调用者通常会采用“new 被调用者”的代码方式来创建对象,这种方式会导致调用者与被调用者之间的耦合性增加,不利于后期项目的升级和维护
C、在使用Spring框架之后,控制权由应用代码转移到了Spring容器,控制权发生了反转,这就是Spring的控制反转
D、从Spring容器的角度来看,Spring容器负责将被依赖对象赋值给调用者的成员变量,相当于为调用者注入了依赖的实例,这就是Spring的依赖注入
参考答案: A
【答案解析】
依赖注入(DI)和控制反转(IoC)是从不同角度来描述了同一件事情。依赖注入是从应用程序的角度描述,即应用程序依赖IoC容器创建并注入它所需要的外部资源;而控制反转是从IoC容器的角度描述,即IoC容器控制应用程序,由IoC容器反向地向应用程序注入应用程序所需要的外部资源。
3、下列选项中,对<bean>元素中的属性说法错误的是( )。
A、id 属性是<bean>元素的唯一标识符
B、name 属性可以为 Bean 指定名称,只能指定一个名称
C、class 属性可以指定 Bean 的具体实现类
D、scope 属性用于设定 Bean 实例的作用范围
参考答案:B
【答案解析】
<bean>元素中的常用属性包括:
id属性:是<bean>元素的唯一标识符,Spring容器对Bean的配置和管理通过id属性完成,装配Bean时也需要根据id值获取对象。
name属性:可以为Bean指定多个名称,每个名称之间用逗号或分号隔开。
class属性:可以指定Bean的具体实现类,其属性值为对象所属类的全路径。
scope属性:用于设定Bean实例的作用范围,其属性值有:singleton(单例)、prototype(原型)、request、session和global session。
4、Spring容器支持多种形式的Bean的装配方式,错误的是()。
A、基于XML的装配
B、基于properties的装配
C、基于注解的装配
D、自动装配
参考答案:B
【答案解析】
Bean的装配方式包括:基于XML的装配,基于注解的装配,自动装配。
5、以下关于Spring AOP 的介绍错误的是( )。
A、AOP的全称是Aspect-Oriented Programming,即面向切面编程
B、AOP采取横向隔离机制,将分散在各个方法中的重复代码提取出来,这种采用横向隔离机制的方式,采用OOP思想是无法办到的
C、虽然AOP是一种新的编程思想,采取横向抽取机制,是OOP的升级替代品
D、AOP的使用不仅提高了开发效率,而且增强了代码的可维护性
参考答案:C
【答案解析】
AOP是一种新的编程思想,但却不是OOP的替代品,它只是OOP的延伸和补充。
6、下列选项中,关于事务管理方式相关说法错误的是( )。
A、Spring中的事务管理分为两种方式:一种是传统的编程式事务管理,另一种是声明式事务管理
B、编程式事务管理:是通过AOP技术实现的事务管理,就是通过编写代码实现的事务管理,包括定义事务的开始、正常执行后的事务提交和异常时的事务回滚
C、声明式事务管理:其主要思想是将事务管理作为一个“切面”代码单独编写,然后通过AOP技术将事务管理的“切面”代码植入到业务目标类中
D、声明式事务管理最大的优点在于开发者无需通过编程的方式来管理事务,只需在配置文件中进行相关的事务规则声明,就可以将事务规则应用到业务逻辑中
参考答案:B
【答案解析】
编程式事务管理:通过编写代码实现的事务管理,包括定义事务的开始、正常执行后的事务提交和异常时的事务回滚。(没有AOP)
7、<bean id=“user” class=“com.itheima.User”> <constructor-arg name=“id” value=“1”></constructor-arg> <constructor-arg name=“name” value=“张三”></constructor-arg> <constructor-arg name=“password” value=“123”></constructor-arg> </bean> 关于以上代码段,下列选项中描述错误的是( )。
A、<bean>元素实例化实体类
B、<bean>元素中的class属性指定待实例化的相对路径类名
C、<constructor-arg>元素为实体类中的属性赋值
D、<constructor-arg>元素中的name属性指定参数
参考答案:B
【答案解析】
<bean>元素实例化实体类
<bean>元素中的class属性指定待实例化的全路径类名
<constructor-arg>元素为实体类中的属性赋值
<constructor-arg>元素中的name属性指定参数
8、下列选项中,用于通知/增强处理的是( )。
A、Joinpoint
B、Pointcut
C、Aspect
D、Advice
参考答案:D
【答案解析】
通知/增强处理就是插入的切面程序代码。可以将通知/增强处理理解为切面中的方法,它是切面的具体实现。
9、下列选项中,<property>元素说法错误的是( )。
A、name 属性指定类的成员变量名称
B、vlaue属性提供对应的成员变量注入值
C、<property>元素是<bean>元素的子元素
D、ref 属性表示对 Spring IoC 容器中某 Bean实例的成员变量引用
参考答案:D
【答案解析】
<property>元素中的name属性指定Bean实例中的相应属性的名称,name属性的值可以通过ref属性或者value属性指定。当使用 ref 属性时,表示对 Spring IoC 容器中某个 Bean 实例的引用.应用整个bean
10、Spring容器默认的作用域是( )。
A、prototype
B、request
C、session
D、singleton
参考答案:D
【答案解析】
singleton是Spring容器默认的作用域,当Bean的作用域为singleton时,Spring容器只为Bean创建一个实例,该实例可以重复使用。
11、以下有关Bean的prototype作用域说法错误的是()。
A、prototype是Spring容器默认的作用域
B、在使用prototype作用域时,Spring容器只负责创建Bean实例而不再管理其生命周期
C、在使用prototype作用域时,Spring容器会为每个对该Bean的请求都创建一个新的实例
D、要将Bean定义为prototype作用域,只需在配置文件中将<bean>元素的scope属性值设置为prototype即可
参考答案:A
【答案解析】
singleton是Spring容器默认的作用域。prototype作用域的Bean,每次对Bean请求时都会创建一个新的Bean实例,Spring容器只负责创建Bean实例而不再管理其生命周期。
scope属性用于设定Bean实例的作用范围,其属性值有:singleton(单例)、prototype(原型)、request、session和global session。
多选题
12、以下有关依赖注入相关说法正确的有()。
A、依赖注入(DI)与控制反转(IoC)的含义相同,只不过这两个称呼是从两个角度描述的同一个概念
B、在传统模式下,调用者通常会采用“new 被调用者”的代码方式来创建对象,这种方式会导致调用者与被调用者之间的耦合性增加,不利于后期项目的升级和维护
C、在使用Spring框架之后,控制权由应用代码转移到了Spring容器,控制权发生了反转,这就是Spring的控制反转
D、从Spring容器的角度来看,Spring容器负责将被依赖对象赋值给调用者的成员变量,相当于为调用者注入了依赖的实例,这就是Spring的依赖注入
参考答案:A,B,C,D
【答案解析】
依赖注入(DI)和控制反转(IoC)是从不同角度来描述了同一件事情。依赖注入是从应用程序的角度描述,即应用程序依赖IoC容器创建并注入它所需要的外部资源;而控制反转是从IoC容器的角度描述,即IoC容器控制应用程序,由IoC容器反向地向应用程序注入应用程序所需要的外部资源。
在使用Spring框架之后,对象的实例不再由调用者来创建,而是由Spring容器来创建,Spring容器会负责控制程序之间的关系,而不是由调用者的程序代码直接控制。这样,控制权由应用代码转移到了Spring容器,控制权发生了反转,这就是Spring的控制反转。
从Spring容器的角度来看,Spring容器负责将被依赖对象赋值给调用者的成员变量,这相当于为调用者注入了它依赖的实例,这就是Spring的依赖注入。
13、Spring容器支持多种形式的Bean的装配方式,下列选项中包括()。
A、基于XML的装配
B、基于properties的装配
C、基于注解的装配
D、自动装配
参考答案:A,C,D
【答案解析】
Bean的装配方式包括:基于XML的装配,基于注解的装配,自动装配。
14、下列选项中,关于事务管理方式的描述正确的有( )。
A、Spring中的事务管理分为两种方式:一种是传统的编程式事务管理,另一种是声明式事务管理
B、编程式事务管理:通过编写代码实现的事务管理,包括定义事务的开始、正常执行后的事务提交和异常时的事务回滚
C、声明式事务管理:其主要思想是将事务管理作为一个“切面”代码单独编写,然后通过AOP技术将事务管理的“切面”代码植入到业务目标类中
D、声明式事务管理最大的优点在于开发者无需通过编程的方式来管理事务,只需在配置文件中进行相关的事务规则声明,就可以将事务规则应用到业务逻辑中
参考答案:A,B,C,D
【答案解析】
Spring中的事务管理分为两种方式:一种是传统的编程式事务管理,另一种是声明式事务管理。
编程式事务管理:通过编写代码实现的事务管理,包括定义事务的开始、正常执行后的事务提交和异常时的事务回滚。
声明式事务管理:其主要思想是将事务管理作为一个“切面”代码单独编写,然后通过AOP技术将事务管理的“切面”代码植入到业务目标类中。
声明式事务管理最大的优点在于开发者无需通过编程的方式来管理事务,只需在配置文件中进行相关的事务规则声明,就可以将事务规则应用到业务逻辑中。
15、以下有关Bean的singleton作用域说法正确的有( )。
A、singleton是Spring容器默认的作用域
B、当Bean的作用域为singleton时,Spring容器就只会存在一个共享的Bean实例
C、singleton作用域可以避免反复创建和销毁实例造成的资源消耗
D、Bean的作用域是通过<bean>元素的scope属性来指定的,该属性值有5个值,对应5种作用域
参考答案:A,B,C,D
【答案解析】
singleton是Spring容器默认的作用域,当Bean的作用域为singleton时,Spring容器只为Bean创建一个实例,该实例可以重复使用。Spring容器管理着Bean的生命周期,包括Bean的创建、初始化、销毁。因为创建和销毁Bean实例会带来一定的系统开销,所以singleton作用域可以避免反复创建和销毁实例造成的资源消耗。
scope属性用于设定Bean实例的作用范围,其属性值有:singleton(单例)、prototype(原型)、request、session和global session。
16、下列选项中,对Spring AOP的描述正确的有( )。
A、AOP的全称是Aspect-Oriented Programming,即面向切面编程
B、AOP采取横向隔离机制,将分散在各个方法中的重复代码提取出来,这种采用横向隔离机制的方式,采用OOP思想是无法办到的
C、AOP是OOP的升级替代品
D、AOP的使用不仅提高了开发效率,而且增强了代码的可维护性
参考答案:A,B,D
【答案解析】
AOP是一种新的编程思想,但却不是OOP的替代品,它只是OOP的延伸和补充。
17、以下有关Bean的prototype作用域说法正确的是()。
A、prototype是Spring容器默认的作用域
B、在使用prototype作用域时,Spring容器只负责创建Bean实例而不再管理其生命周期
C、在使用prototype作用域时,Spring容器会为每个对该Bean的请求都创建一个新的实例
D、要将Bean定义为prototype作用域,只需在配置文件中将<bean>元素的scope属性值设置为prototype即可
参考答案:B,C,D
【答案解析】
singleton是Spring容器默认的作用域。prototype作用域的Bean,每次对Bean请求时都会创建一个新的Bean实例,Spring容器只负责创建Bean实例而不再管理其生命周期。
scope属性用于设定Bean实例的作用范围,其属性值有:singleton(单例)、prototype(原型)、request、session和global session。
18、<bean id=“user1” class=“com.itheima.User1”> <property name=“id” value=“2”></property> <property name=“name” value=“李四”></property> <property name=“password” value=“456”></property> </bean> 关于以上代码段,下列选项中描述正确的是( )。
A、<bean>元素实例化实体类
B、<bean>元素中的class属性指定待实例化的全路径类名
C、<property>元素为实体类中的属性赋值
D、<property>元素中的name属性指定参数
参考答案:A,B,C,D
【答案解析】
<bean>元素实例化实体类
<bean>元素中的class属性指定待实例化的全路径类名
<property>元素为实体类中的属性赋值
<property>元素中的name属性指定参数
19、下列选项中,Spring AOP术语的描述正确的有( )。
A、Aspect:切面是指关注点(指类中重复的代码)形成的类,通常是指封装的、用于横向插入系统的功能类。
B、Joinpoint:连接点是程序执行过程中某个特定的节点
C、Pointcut:当某个连接点满足预先指定的条件时,AOP 就能够定位到这个连接点,在连接点处插入切面,该连接 点也就变成了切入点。
D、Target:目标对象是指被插入切面的方法。
参考答案:A,B,C,D
判断题
20、在AOP专业术语中,切面是指要对哪些Joinpoint进行拦截。
参考答案: 错
【答案解析】
切面是指关注点形成的类(关注点是指类中重复的代码),通常是指封装的、用于横向插入系统的功能类(如事务管理、日志记录等)。
21、Spring中的事务管理分为两种方式,一种是传统的编程式事务管理,另一种是声明式事务管理。
参考答案:对
22、AOP的全称是Aspect-Oriented Programming,即面向切面编程。
参考答案:对
23、依赖注入(DI)与控制反转(IoC)的含义不同,描述的不是同一个概念。
参考答案:错
【答案解析】依赖注入(DI)和控制反转(IoC)是从不同角度来描述了同一件事情。依赖注入是从应用程序的角度描述,即应用程序依赖IoC容器创建并注入它所需要的外部资源;而控制反转是从IoC容器的角度描述,即IoC容器控制应用程序,由IoC容器反向地向应用程序注入应用程序所需要的外部资源。
24、Spring容器支持XML和Properties两种格式的配置文件,在实际开发中,最常使用的就是Properties格式的配置方式。
参考答案:错
【答案解析】Spring容器支持XML和Properties两种格式的配置文件,在实际开发中,最常用的是XML格式的配置文件。
25、Spring提供了3种基于XML的装配方式:设值注入、属性setter方法注入和构造方法注入。
参考答案:错
【答案解析】
基于XML的装配就是读取XML配置文件中的信息完成依赖注入,Spring容器提供了两种基于XML的装配方式,属性setter方法注入和构造方法注入。
作业五 Spring MVC 框架
单选题
1、用户通过浏览器向服务器发送请求时,负责拦截用户请求的是()。
A、处理器
B、处理器映射器
C、前端控制器
D、处理器适配器
参考答案:C
【答案解析】
处理器会返回ModelAndView对象; 处理器映射器会生成处理器对象以及处理器拦截器(如果有就生成); 处理器适配器会将ModelAndView对象返回给DispatcherServlet前端控制器;
2、下列关于Spring MVC特点说法错误的是( )。
A、灵活性强,但不易于与其他框架集成
B、可自动绑定用户输入,并能正确的转换数据类型
C、支持国际化
D、使用基于XML的配置文件,在编译后,不需要重新编译应用程序
参考答案:A
【答案解析】
Spring MVC灵活性强,易扩展,易与其他框架集成。
3、下列选项中,哪个是Spring MVC的后端控制器()。
A、HandlerMapping
B、HandlerAdapter
C、DispatcherServlet
D、Handler
参考答案:D
【答案解析】
HandlerMapping是处理器映射器; HandlerAdapter是处理器适配器; DispatcherServlet是前端控制器;
4、在@PathVariable注解中,用于指定URL中占位符名称的是( )。
A、defaultValue
B、value
C、name
D、required
参考答案:B
【答案解析】
@PathVariable
注解有以下两个常用属性。:
value:用于指定 URL 中占位符名称。
required:是否必须提供占位符,默认值为 true。
5、下列选项,对POJO类型数据绑定的描述错误的是( )。
A、将关联的请求参数封装在一个POJO中
B、在方法中直接使用该POJO作为形参完成数据绑定
C、客户端请求的参数名称不需要与要绑定的POJO类型中的属性名称一致
D、客户端请求的参数名称必须与要绑定的 POJO 类型中的属性名称保持一致
参考答案:C
【答案解析】
在进行 POJO 类型数据绑定时,客户端请求的参数名称必须与要绑定的 POJO 类型中的属性名称保持一致。这样客户端发送请求时,请求数据才会自动绑定到处理器形参 POJO 对象中,否则处理器参数接收的值为 null。
6、下列关于Spring MVC的执行流程,说法错误的是()。
A、用户通过浏览器向服务器发送请求,该请求会被DispatcherServlet前端控制器拦截
B、处理器映射器会生成处理器对象以及处理器拦截器返回给DispatcherServlet前端控制器
C、处理器适配器会调用并执行Controller类中的代码
D、Controller类中的代码执行完成后,会返回ModelAndView对象,该对象中只包含视图名
参考答案:D
【答案解析】
ModelAndView对象中,会包含视图名或者包含模型和视图名。
多选题
7、下列关于Java EE开发的三层架构的作用,说法正确的是( )。
A、表现层负责接收客户端的请求,并向客户端响应结果
B、业务层负责业务逻辑处理,与项目需求息息相关
C、持久层负责与数据库交互,对数据库的数据进行增删改查
D、以上说法都正确
参考答案:A,B,C,D
8、下列类型中,属于Spring MVC可以绑定的简单数据类型的是( )。
A、Integer
B、String
C、Double
D、List
参考答案:A,B,C
【答案解析】
简单数据类型的绑定就是指 Java 中基本类型(如 Integer、Double、String 等)的数据绑定。
9、注解@RequestMapping可以标注在( )。
A、类上
B、方法上
C、属性上
D、以上都可以
参考答案:A,B
【答案解析】
@RequestMapping注解用于建立请求URL和Handler(处理器)之间的映射关系,该注解可以标注在方法上和类上。
10、下列选项中,属于Spring MVC框架特点的是( )。
A、Spring MVC是Spring框架的后续产品,可以方便地使用Spring框架所提供的其他功能
B、Spring MVC支持各种请求资源的映射策略
C、Spring MVC支持多种视图技术,支持JSP、Velocity和FreeMarker等视图技术
D、Spring MVC支持国际化,可以根据用户区域显示多国语言
参考答案:A,B,C,D
11、下列关于@RequestParam注解的属性,说法正确的有( )。
A、如果当前@RequestParam注解只使用vaule属性,则可以省略value属性名
B、name属性表示绑定的请求参数名称
C、required属性默认值为true,表示请求中一定要有相应的参数
D、defaultValue属性表示如果请求中没有同名参数时的默认值
参考答案:A,B,C,D
12、下列选项中,Spring MVC框架可以支持的视图技术包括( )。
A、JSP
B、Velocity
C、FreeMarker
D、以上说法都不正确
参考答案:A,B,C
判断题
13、Spring MVC是一个Web框架,它基于Servlet API属于Spring中的一个模块,正式名称是Spring Web MVC,但它通常被称为Spring MVC。
参考答案: 对
14、Spring MVC支持多种视图技术,支持JSP、Velocity和FreeMarker等多种视图技术。
参考答案:对
15、@RequestMapping注解只能标注在方法上。
参考答案: 错
【答案解析】
@RequestMapping注解用于建立请求URL和Handler(处理器)之间的映射关系,该注解可以标注在方法上和类上。
16、在@PathVariable注解中,required属性表示是否必须提供占位符,它的默认值为true。
参考答案:对
17、在Spring MVC中进行简单类型的数据绑定,只需客户端请求参数的名称和处理器的形参名称一致即可,请求参数会自动映射并匹配到处理器的形参完成数据绑定。
参考答案:对
18、在Spring 4.0版本后,配置文件内必须要配置处理器映射器、处理器适配器和视图解析器。
参考答案:错
【答案解析】
在Spring 4.0版本后,如果不配置处理器映射器、处理器适配器和视图解析器,框架会加载内部默认的配置完成相应的工作。明白一点,越更新越方便,这叫体感好。
19、将所有关联的请求参数封装在一个POJO中,然后在方法中直接使用该POJO作为形参来完成数据绑定的过程称为POJO类型的数据绑定。
参考答案:对
20、在Spring MVC中,如果想显式地配置处理器映射器和处理器适配器,可以在配置文件中使用<mvc:annotation-driven>元素来实现。
参考答案:对
21、Spring MVC提供了对MVC模式的全面支持,它可以将表现层进行解耦,同时,Spring MVC是基于请求-响应处理模型的请求驱动框架,简化了表现层的实现。
参考答案:对
22、在复杂POJO数据绑定时,如果数据需要绑定到POJO属性对象的属性中,客户端请求的参数名格式必须为“属性对象名称.属性”。
参考答案: 对
23、如果Spring MVC的配置文件中没有视图解析器,则不会进行请求转发。
参考答案:错
【答案解析】
如果 Spring MVC 的配置文件中没有视图解析器,处理器执行后,会将请求转发到与方法返回值一致的映射路径。
24、在Spring MVC的执行过程中,前端控制器、处理器映射器、处理器适配器和视图解析器对象的工作都是在框架的内部执行的。
参考答案:对
25、@RequestParam注解的required属性用于指定参数是否必须,它的默认值为false。
参考答案:错