【基于轻量型架构的WEB开发】课程 作业3 Spring框架
一. 单选题(共12题,48分)
1. (单选题)以下有关Spring框架优点的说法不正确的是( )。
A. Spring就大大降低了组件之间的耦合性。
B. Spring是一种侵入式框架
C. 在Spring中,可以直接通过Spring配置文件管理数据库事务,省去了手动编程的繁琐,提高了开发效率。
D. Spring对Java EE开发中的一些API(如JDBC、JavaMail等)都进行了封装,大大降低了这些API的使用难度。
正确答案:B
答案解析:Spring是非侵入式的框架,不会影响原有代码
2. (单选题)下列选项中,关于<constructor-arg>元素说法错误的是( )。
A. <constructor-arg>元素用于给类的构造方法的参数注入值
B. 一个<constructor-arg>元素表示构造方法的一个参数
C. <constructor-arg>元素定义构造方法的参数,必须顺序和类中构造方法参数的顺序保持一致。
D. <constructor-arg>元素的type属性用于指定参数的类型
正确答案:C
答案解析:<constructor-arg>定义时不区分顺序,详见教材p89
3. (单选题)以下有关依赖注入说法错误的是()。
A. 依赖注入(DI)与控制反转(IoC)的含义不同,描述不同的概念
B. 在传统模式下,调用者通常会采用“new 被调用者”的代码方式来创建对象,这种方式会导致调用者与被调用者之间的耦合性增加,不利于后期项目的升级和维护
C. 在使用Spring框架之后,控制权由应用代码转移到了Spring容器,控制权发生了反转,这就是Spring的控制反转
D. 从Spring容器的角度来看,Spring容器负责将被依赖对象赋值给调用者的成员变量,相当于为调用者注入了依赖的实例,这就是Spring的依赖注入
正确答案:A
答案解析:依赖注入和控制反转是从不同角度来描述了同一件事情,见教材88页
4. (单选题)<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
答案解析:class指定对象所属类的(全路径)全限定名
5. (单选题)Spring容器默认的作用域是( )。
A. prototype
B. request
C. session
D. singleton
正确答案:D
答案解析:默认为单例模式
6. (单选题)实例工厂实例化Bean时,指向为Bean配置的实例工厂的属性是( )。
A. factory-method
B. factory-methods
C. factory-bean
D. factory-name
正确答案:C
答案解析:factory-bean指向配置的实例工厂factory-method指向使用工厂中的哪个方法
7. (单选题)下列选项中,关于Spring注解的描述错误的是( )。
A. @Autowired指定要自动装配的对象
B. @Repository指定要自动装配的对象名称
C. @Service指定一个业务逻辑组件 Bean
D. @Controller指定一个控制器组件Bean
正确答案:B
答案解析:@Repository表示dao层的bean
8. (单选题)下列选项中,对<bean>元素中的属性说法错误的是( )。
A. id 属性是<bean>元素的唯一标识符
B. name 属性可以为 Bean 指定名称,只能指定一个名称
C. class 属性可以指定 Bean 的具体实现类
D. scope 属性用于设定 Bean 实例的作用范围
正确答案:B
答案解析:name可以指定多个名称,用逗号或分号隔开,见教材p94
9. (单选题)Spring容器中用于监控Bean对象初始化节点的注解是( )。
A. @PostConstruct
B. @PreDestroy
C. @GetConstruct
D. @Destroy
正确答案:A
答案解析:见教材106页
10. (单选题)以下有关Spring常用的注解说明错误的是( )。
A. @Autowired指定要注入的对象
B. @Repository指定一个数据访问组件Bean,用于将数据访问层的类标识为Spring 中的Bean,功能上等同于@Component
C. @Service指定一个业务逻辑组件Bean,用于将业务逻辑层的类标识为Spring中的Bean,功能上等同于@Component
D. @Controller指定一个控制器组件Bean,用于将控制层的类标识为Spring中的Bean,功能上等同于@Component
正确答案:A
答案解析:Resource指定要注入的对象
11. (单选题)Spring容器支持多种形式的Bean的装配方式,错误的是()。
A. 基于XML的装配
B. 基于properties的装配
C. 基于注解的装配
D. 自动装配
正确答案:B
答案解析:bean的装配不包括基于properties文件的装配
12. (单选题)在ApplicationContext接口实现类中从类路径加载配置文件,实例化ApplicationContext接口的类方法是( )。
A. WebApplicationContext
B. AnnotationConfigApplicationContext
C. ClassPathXmlApplicationContext
D. FileSystemXmlApplicationContext
正确答案:C
答案解析:见教材94页
二. 多选题(共4题,16分)
13. (多选题)下列选项中,对Spring框架的优点描述正确的有( )。
A. 支持AOP编程
B. 支持声明式事务
C. 降低耦合性,方便开发
D. 降低Java EE API的使用难度
正确答案:ABCD
答案解析:见教材81页
14. (多选题)下列选项中,属于<constructor-arg>元素的属性的有( )。
A. value
B. type
C. id
正确答案:AB
答案解析:见教材95页
15. (多选题)以下关于Spring对Bean生命周期的管理说法正确的是( )。
A. Spring容器可以管理singleton作用域中Bean的生命周期
B. 在prototype作用域中, Spring容器只负责创建Bean实例,不会管理其生命周期
C. 每次客户端请求singleton作用域的Bean时,Spring容器都会创建一个新的实例,并且不会管那些被配置成singleton作用域的Bean的生命周期
D. 了解Bean的生命周期的意义就在于,可以在某个Bean生命周期的某些指定时刻完成一些相关操作
正确答案:ABD
答案解析:单例只会创建一次,见教材106页
16. (多选题)以下有关Bean的singleton作用域说法正确的有( )。
A. singleton是Spring容器默认的作用域
B. 当Bean的作用域为singleton时,Spring容器就只会存在一个共享的Bean实例
C. singleton作用域可以避免反复创建和销毁实例造成的资源消耗
D. Bean的作用域是通过<bean>元素的scope属性来指定的,该属性值有5个值,对应5种作用域
正确答案:ABCD
答案解析:见教材100页
三. 判断题(共7题,28分)
17. (判断题)控制反转(Inversion of Control,缩写为IoC)用来降低程序代码之间的耦合度。
A. 对
B. 错
正确答案:对
18. (判断题)Spring配置文件的名称可以自定义,通常在实际开发中,都会将配置文件命名为applicationContext.xml。
A. 对
B. 错
正确答案:对
19. (判断题)Spring的<bean>元素中包含一个autowire属性,可以通过设置autowire属性的值实现Bean的自动装配。
A. 对
B. 错
正确答案:对
20. (判断题)在Bean的两种作用域singleton和prototype中,Spring容器对Bean的生命周期的管理是相同的。
A. 对
B. 错
正确答案:错
答案解析:singleton作用域的Bean,Spring容器会管理其完整生命周期;而prototype作用域的Bean,Spring容器仅负责实例化,不管理其完整生命周期。
21. (判断题)Spring提供了3种基于XML的装配方式:设值注入、属性setter方法注入和构造方法注入。
A. 对
B. 错
正确答案:错
答案解析:Spring提供了两种基于XML的装配方式:属性setter方法注入和构造方法注入。
22. (判断题)构造方法实例化是通过Bean对应类中默认的无参构造方法来实例化Bean。
A. 对
B. 错
正确答案:对
答案解析:构造方法实例化通常使用带有参数的构造方法,而不是无参构造方法。
23. (判断题)FileSystemXmlApplicationContext 从文件系统加载配置文件,实例化 ApplicationContext 接口。
A. 对
B. 错
正确答案:对
答案解析:
见教材94页
四. 填空题(共2题,8分)
24. (填空题)<constructor-arg>元素用于指定参数值的属性是value和【】。
正确答案:ref
答案解析:value指定基本数据类型的常量值,ref指定另一个bean。
25. (填空题)在Spring配置文件中,Bean的作用域是通过<bean>元素的【】属性来指定的。
正确答案:scope
答案解析:scope属性用于指定Bean的作用域,如singleton、prototype等。