1. 下列选项中,哪一个不是Spring MVC的核心组件( )
A DispatcherServlet
B SpringFactoriesLoader
C HandlerMapping
D ModelAndView
正确答案:B
解析:
SpringMVC
五大核心组件
1.DispatcherServlet 请求入口
2.HandlerMapping 请求派发,负责请求和控制器建立一一对应的关系
3.Controller 处理器
4.ModelAndView 封装模型信息和视图信息
5.ViewResolver 视图处理器,定位页面
2. Spring Bean 的默认作用范围是( )
A singleton
B prototype
C request
D session
正确答案:A
解析:
在Spring中使用Scope来表示一个bean定义对应产生实例的类型,也可以说是对应实例的作用范围。Spring内置支持的scope严格来说默认是有五种,分别是:
singleton:这是默认Scope,表示在整个bean容器中或者说是整个应用中只会有一个实例。 prototype:多例类型,表示每次从bean容器中都会获取到一个对应bean定义全新的实例。 request:仅适用于Web环境下的ApplicationContext,表示每一个HttpRequest生命周期内会有一个单独的实例,即每一个Http请求都会拥有一个单独的实例。
session:仅适用于Web环境下的ApplicationContext,表示每一个HttpSession生命周期内会有一个单独的实例,即每一个HttpSession下都会拥有一个单独的实例,即每一个用户都将拥有一个单独的实例。
globalSession:仅适用于Web环境下的ApplicationContext,一般来说是Portlet环境下。表示每一个全局的Http Session下都会拥有一个单独的实例。 application:仅适用于Web环境下的ApplicationContext,表示在ServletContext生命周期内会拥有一个单独的实例,即在整个ServletContext环境下只会拥有一个实例。
3. 下列选项中,哪一项不是Spring AOP支持的通知类型( )
A 前置通知
B 后置通知
C 织入通知
D 异常通知
正确答案:C
解析:
通 知 是 个 在 方 法 执 行 前 或 执 行 后 要 做 的 动 作 , 实 际 上 是 程 序 执 行 时 要 通 过 SpringAOP 框架触发的代码段。
Spring 切面可以应用五种类型的通知:
before:前置通知,在一个方法执行前被调用
after:在方法执行之后调用的通知,无论方法执行是否成功
after-returning:仅当方法成功完成后执行的通知
after-throwing:在方法抛出异常退出时执行的通知
around:在方法执行之前和之后调用的通知
4. 关于BeanFactory和FactoryBean,下列说法正确的是( )
A BeanFactory是所有Spring Bean的容器根接口。
B BeanFactory是一种创建Bean的方式。
C FactoryBean是所有Spring Bean的容器根接口。
D FactoryBean是一种创建Bean的方式。
正确答案:AD
解析:
Spring中BeanFactory和FactoryBean有什么区别?
a. BeanFactory,以Factory结尾,表示它是⼀个⼯⼚类(接⼝),⽤于管理Bean的⼀个⼯⼚。在Spring中,BeanFactory是 IOC容器的核⼼接⼝,它的职责包括:实例化、定位、配置应⽤程序中的对象及建⽴这些对象间的依赖。
b. FactoryBean以Bean结尾,表示它是⼀个Bean,不同于普通Bean的是:它是实现了FactoryBean接⼝的Bean,根据该 Bean的ID从BeanFactory中获取的实际上是FactoryBean的getObject()返回的对象,⽽不是FactoryBean本身,如果要获 取FactoryBean对象,请在id前⾯加⼀个&符号来获取。
5. 下列Spring MVC注解中,可以映射多种HTTP请求类型的是( )
A @RequestMapping
B @GetMapping
C @PostMapping
D @DeleteMapping
正确答案:A
解析:
@RequestMapping注解可以映射多种HTTP请求类型,具体的类型通过method配置项指定。为了简化method配置项,Spring 4.3版本新增了几个注解,这些注解可以看成是@RequestMapping注解的快捷方式,相当于固定了method配置项的值,这些注解包括:@GetMapping、@PostMapping、@PatchMapping、@PutMapping、@DeleteMapping。
6. 下列关于@RequestParam注解的说明中,错误的是( )
A @RequestParam注解用于对HTTP请求参数和控制器方法参数进行映射。
B @RequestParam注解的value成员用于指定要映射的HTTP请求参数名。
C @RequestParam注解的required成员用于指定该参数是否必填。
D @RequestParam注解的required成员默认值为false,也就是映射的参数默认可以为空。
正确答案:D
解析:
@RequestParam注解的required成员用于指定该参数是否必填,其默认值为true,也就是映射的参数默认不能为空。
7. 下列关于@ComponentScan注解的说法中,错误的是( )
A @ComponentScan注解用于定义Bean的扫描策略。
B @ComponentScan注解默认规则是对当前包的子包中的Bean进行扫描。
C @ComponentScan注解的basePackages属性用于自定义要扫描哪些包。
D @ComponentScan注解只是定义了扫描范围,在此范围内带有特定注解的Bean才会被载入容器。
正确答案:B
解析:
@ComponentScan注解默认规则是对当前包及其子包中的Bean进行扫描。
8. 关于Spring MVC拦截器,下列说法错误的是( )
A 开发Spring MVC拦截器,需实现WebMvcConfigurer接口。
B preHandle方法在Controller之前执行,若返回false,则终止执行后续的请求。
C postHandle方法在Controller之后、模板之前执行。
D afterCompletion方法在模板之后执行。
正确答案:A
解析:
A 拦截器是SpringMVC中的一个核心应用组件,主要用于处理多个 Controller的共性问题.
当我们的请求由DispatcherServlet派发 到具体Controller之前首先要执行拦截器中一些相关方法,在这些 方法中可以对请求进行相应预处理(例如权限检测,参数验证),这些方法可以决定对这个请求进行拦截还是放行.
>>服务器一启动,就会创建拦截器对象, >>对拦截器配置延迟加载是没有用的 >>拦截器是单例的,整个过程,拦截器只有一个实例对象
拦截器需要实现 HandleInterceptor接口,或者继承HandlerInterceptorAdaptor抽象类; HandlerInterceptor接口的三个方法:
1,preHandle() 是拦截器最先执行的方法,是在请求到达Controller之前执行的,其实就是拦截器用于拦截请求的,三个参数,分别是request,response,handelr就是这个请求要去找的后端处理器Controller.方法的返回值是bloolean类型,如果返回为false,就说明请求在此终结,不能执行后面的代码了.如果返回值为true,那么这个拦截器就要放行,将请求交给后端处理器Controller.
2,postHandle() 这个方法,是在后端控制器controller处理完请求之后,就执行的,这个方法,多了一个参数,ModelAndView,后端控制器controller处理请求可能需要返回页面和数据,所以会多一个ModelAndView,但是这个方法,是在渲染页面之前执行的,渲染热面是交个前端控制器来完成的. 3,afterCompletion() 拦截器最后执行的方法
9. 下列选项中,属于Spring Bean的作用域的是( )
A singleton
B prototype
C request
D response
正确答案:ABC
解析:
Spring容器中Bean包含五种作用域:singleton、prototype、request、session、globalSession。