Java教程

JavaEE企业级应用开发教程

本文主要是介绍JavaEE企业级应用开发教程,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

第二章(Spring中的Bean)

【单选题】
1、
以下有关Bean的singleton作用域说法错误的是()。

2分
A、prototype是Spring容器默认的作用域
B、对需要保持会话状态的Bean(如Struts2的Action类)应该使用prototype作用域
C、在使用prototype作用域时,Spring容器会为每个对该Bean的请求都创建一个新的实例
D、要将Bean定义为prototype作用域,只需在配置文件中将< bean>元素的scope属性值设置为prototype即可
参考答案 :A

2、
以下有关Bean的装配方式说法正确的是()。

2分
A、Spring容器支持多种形式的Bean的装配方式,如基于XML的装配、基于注解(Annotation)的装配和自动装配(其中最常用的是基于XML的装配);
B、Spring提供了3种基于XML的装配方式:设值注入、构造注入和属性注入;
C、在Spring实例化Bean的过程中,Spring首先会调用Bean的默认构造方法来实例化Bean对象,然后通过反射的方式调用setter方法来注入属性值;
D、设值注入要求一个Bean必须提供一个有参构造方法并且为需要注入的属性提供对应的setter方法。
参考答案 :C
答案说明 :设值注入要求一个Bean必须提供一个无参构造方法
3、
Spring容器支持多种形式的Bean的装配方式,不包括有()。

2分
A、基于XML的装配
B、基于properties的装配
C、基于注解(Annotation)的装配
D、自动装配
参考答案 :B

4、
Spring的< bean>元素中的autowire属性取值不包括以下()。

2分
A、default
B、byName
C、byType
D、byId
参考答案 : D

5、
以下有关Spring中的Bean的相关说法正确的是()。

2分
A、Spring可以被看做是一个大型工厂,这个工厂的作用就是生产和管理Spring容器中的Bean
B、Spring中最常使用的就是Properties格式的配置方式,这种配置方式通过Properties文件来注册并管理Bean之间的依赖关系
C、在Spring中,XML配置文件的可以包含多个< beans>,< beans>中包含了多个< bean>子元素,每一个< bean>子元素定义了一个Bean
D、如果在Bean中未指定id和name,则Spring无法获取Bean
参考答案 :A

6、
以下关于Spring对Bean生命周期的管理说法错误的是()。

2分
A、Spring容器可以管理singleton作用域的Bean的生命周期, Spring能够精确的知道该Bean何时被创建,何时初始化完成,以及何时被销毁
B、对于prototype作用域的Bean,Spring只负责创建,当容器创建了Bean实例后,Bean的实例就交给客户端代码来管理,Spring容器将不再跟踪其生命周期
C、每次客户端请求singleton作用域的Bean时,Spring容器都会创建一个新的实例,并且不会管那些被配置成singleton作用域的Bean的生命周期。
D、了解Bean的生命周期的意义就在于,可以在某个Bean生命周期的某些指定时刻完成一些相关操作
参考答案 :C

7、
以下有关Spring中Bean的作用域说法正确的是()。

2分
A、Spring 4.3中为Bean的实例定义了5种作用域
B、使用prototype定义的Bean在Spring容器中将只有一个实例,也就是说,无论有多少个Bean引用它,始终将指向同一个对象
C、每次通过Spring容器获取的singleton定义的Bean时,容器都将创建一个新的Bean实例
D、globalSession:在一个全局的HTTP Session中,容器会返回该Bean的同一个实例。
参考答案 : D

8、
以下哪些不属于Spring 4.3版本中Bean的作用域()

2分
A、application
B、request
C、response
D、globalSession
参考答案 :C

9、
下列选项中,不属于Spring中实例化Bean的方式的是()。

2分
A、构造器实例化
B、静态工厂方式实例化
C、实例工厂方式实例化
D、抽象方法实例化
参考答案 : D

10、
Spring中定义了一系列的注解,以下有关其常用的注解说明错误的是()。

2分
A、@Autowired用于对Bean的属性变量、属性的setter方法及构造方法进行标注,配合对应的注解处理器完成Bean的自动配置工作,默认按照Bean的名称进行装配。
B、@Repository用于将数据访问层(DAO层)的类标识为Spring中的Bean
C、@Service通常作用在业务层(Service层),用于将业务层的类标识为Spring中的Bean
D、@Controller通常作用在控制层(如Spring MVC的Controller),用于将控制层的类标识为Spring中的Bean
参考答案 :A

【多选题】
11、
在Spring配置文件中,Bean的作用域是通过< bean>元素的scope属性来指定的,该属性值可以设值包括有()。

5分
A、request
B、response
C、session
D、application
参考答案 :A,C,D

12、
以下有关< bean>元素的属性及子元素说明正确的是()。

5分
A、id是一个Bean的唯一标识符,Spring容器对Bean的配置、管理都通过该属性来完成
B、name :Spring容器同样可以通过此属性对容器中的Bean进行配置和管理,name属性中可以为Bean指定多个名称,每个名称之间用逗号或分号隔开
C、class属性指定了Bean的具体实现类,它必须是一个完整的类名
D、scope用来设定Bean实例的作用域,其属性值有5种
参考答案 :A,B,C
答案说明 :最近版本Spring框架scope属性值有7种
13、
Spring中定义了一系列的注解,常用的注解有()。

5分
A、@Autowired
B、@Repository
C、@Service
D、@Controller
参考答案 :A,B,C,D

14、
以下哪些属于实例化Bean的方式()。

5分
A、构造器实例化
B、静态工厂方式实例化
C、实例工厂方式实例化
D、抽象方法实例化
参考答案 :A,B,C

【判断题】
15、
singleton是Spring容器默认的作用域()。

1分


参考答案 :对
答案说明 :
16、
Spring容器支持多种形式的Bean的装配方式,如基于XML的装配、基于注解(Annotation)的装配和自动装配(其中最常用的是基于XML的装配)()。

1分


参考答案 :错
答案说明 :
17、
构造器实例化是指Spring容器通过Bean对应类中默认的无参构造方法来实例化Bean()。

1分


参考答案 :对

18、
实例化Bean有三种方式,分别为构造器实例化、静态工厂方式实例化和实例工厂方式实例化(其中最常用的是构造器实例化)()。

1分


参考答案 :对

19、
对于prototype作用域的Bean,Spring只负责创建,当容器创建了Bean实例后,Bean的实例就交给客户端代码来管理,Spring容器将不再跟踪其生命周期()。

1分


参考答案 :对

20、
在使用prototype作用域时,Spring容器为每个对该Bean的请求都只创建一个实例()。

1分


参考答案 :错

21、Spring提供了3种基于XML的装配方式:设值注入、构造注入和属性注入()。1分


参考答案 :错

22、
在配置文件中,通常一个普通的Bean只需要定义id(或name)和class 两个属性即可()。

1分


参考答案 :对

23、
在Spring中,要想使用容器中的Bean,也需要实例化Bean()。

1分


参考答案 :对

24、
prototype是Spring容器默认的作用域()。

1分


参考答案 :错

【填空题】
25、对于_______作用域的Bean,Spring只负责创建,当容器创建了Bean实例后,Bean的实例就交给客户端代码来管理,Spring容器将不再跟踪其生命周期。2分
参考答案 :【prototype】

26、Spring实例化Bean有三种方式,分别为构造器实例化、静态工厂方式实例化和________。2分
参考答案 :【实例工厂方式实例化】

27、Spring提供了2种基于XML的装配方式:_______ 和_______。2分
参考答案 :【设值注入(Setter Injection)】【构造注入(Constructor Injection)】

28、所谓自动装配,就是将一个Bean自动的注入到到其他Bean的_____中。2分
参考答案 :【Property】

29、
_______ 实例化Bean时,其class属性指定的是_______,同时还需要使用factory-method属性来指定所创建的实例化bean的方法。

2分
参考答案 :【静态工厂类】【静态工厂方法】
答案说明 :
【简答题】
30、Bean的作用域是通过元素的scope属性来指定的,请说出该属性值有哪些。10分
参考答案 :singleton、prototype、request、session、globalSession、application、websocket
答案说明 :
31、请简述基于XML的装配方式中设值注入的要求。10分
Spring中基于XML的装配方式中设值注入需要满足以下两点要求:

1、Bean类必须提供一个默认的无参构造方法。

2、Bean类必须为需要注入的属性提供对应的setter方法。

32、请简述使用静态工厂方式实例化Bean所在配置文件的配置方式。10分
在配置文件中,首先通过元素配置一个Bean,然后通过class属性指定其对应的静态工厂实现类。由于这种方式配置Bean后,Spring容器不知道哪个是你所需要的工厂方法,所以需要增加factory-method属性来告诉Spring容器。

33、请简述使用实例工厂方式实例化Bean所在配置文件的配置方式。10分
在配置文件中,首先配置了一个工厂Bean,然后配置需要实例化的Bean。在需要实例化的Bean中,使用factory-bean属性指向配置的实例工厂,该属性值就是上一个工厂Bean的id。使用factory-method属性来确定使用工厂中的方法。
【思考题】
34、请简述Bean的生命周期。
Bean的生命周期的整个执行过程描述如下。
(1)根据配置情况调用Bean构造方法或工厂方法实例化Bean。
(2)利用依赖注入来完成Bean中所有属性值的配置注入。
(3)如果Bean实现了BeanNameAware接口,则Spring调用Bean的setBeanName()方法传入当前Bean的id值。
(4)如果Bean实现了BeanFactoryAware接口,则Spring调用setBeanFactory()方法传入当前工厂实例的引用。
(5)如果Bean实现了ApplicationContextAware接口,则Spring调用setApplicationContext()方法传入当前ApplicationContext实例的引用。
(6)如果BeanPostProcessor和Bean关联,则Spring将调用该接口的预初始化方法postProcessBeforeInitialzation()对Bean进行加工操作,这个非常重要,Spring的AOP就是用它实现的。
(7)如果Bean实现了InitializingBean接口,则Spring将调用afterPropertiesSet()方法。
(8)如果在配置文件中通过init-method属性指定了初始化方法,则调用该初始化方法。
(9)如果有BeanPsostProcessor和Bean关联,则Spring将调用该接口的初始化方法postProcessAfterInitialization()。此时,Bean已经可以被应用系统使用了。
(10)如果在 中指定了该Bean的作用范围为 scope=“singleton”,则将该Bean 放入Spring IoC的缓存池中,将触发Spring对该Bean的生命周期管理;如果在中指定了该Bean的作用范围为scope=“prototype”,则将该Bean交给调用者,调用者管理该Bean的生命周期,Spring不再管理该Bean。
(11)如果Bean实现了DisposableBean接口,则Spring会调用destory()方法将Spring中的Bean销毁;如果在配置文件中通过destory-method属性指定了Bean的销毁方法,则Spring将调用该方法进行销毁。

35、请简述Bean的几种装配方式的基本用法
Bean中主要包含三种装配方式,分别为基于XML的装配,基于Annotation的装配和自动装配,这三种装配方式的用法如下:
(1)基于XML的装配:Spring提供了2种基于XML的装配方式:设值注入(Setter Injection)和构造注入(Constructor Injection)。设置注入中的Bean类必须提供一个默认的无参构造方法,同时必须为需要注入的属性提供对应的setter方法。使用设值注入时,在Spring配置文件中,需要使用元素的子元素来为每个属性注入值。使用构造注入时,在配置文件里,需要使用元素的子元素来定义构造方法的参数,可以使用其value属性(或子元素)来设置该参数的值。
(2)基于Annotation的装配:使用基于Annotation的装配时,首先需要使用@Repository、@Service与@Constroller分别对实现类进行标注,然后用@Autowired或@Resource注解对注入的Bean的属性进行标注,最后在Spring的配置文件中,通过<context:annotation-config />来开启注解处理器,或使用<context:component-scan base-package=“Bean所在的包路径”/>的配置方式即可实现Annotation的装配。
(3)自动装配:在元素中使用autowire属性,并将其属性值设置为byName或者byType即可实现自动装配。

这篇关于JavaEE企业级应用开发教程的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!