spring基础题笔记(2)

下列关于Spring事务管理的描述中,错误的是(   )
A.Spring提供了声明式事务、编程式事务两种事务管理方案。
B.声明式事务,只需通过XML或注解进行配置,即可实现对事务的管理。
C.编程式事务,需要通过TransactionTemplate组件执行SQL,达到管理事务的目的。
D.声明式事务优于编程式事务,应该一律采用声明式事务。

答案解析:声明式事务:通过xml或注解方式进行事务的配置。最小只能配置到方法。 编程式事务:代码中根据业务逻辑进行事务实现。可配置方法或代码块,粒度更小。

Spring 事务(详解)_spring事务-优快云博客


下列选项中,哪一个不是Spring MVC的核心组件(   )
A.DispatcherServlet
B.SpringFactoriesLoader
C.HandlerMapping
D.ModelAndView

答案解析:

SpringMVC

五大核心组件

1.DispatcherServlet  请求入口

2.HandlerMapping    请求派发,负责请求和控制器建立一一对应的关系

3.Controller       处理器

4.ModelAndView     封装模型信息和视图信息

5.ViewResolver    视图处理器,定位页面


下列关于@ComponentScan注解的说法中,错误的是(   )
A.@ComponentScan注解用于定义Bean的扫描策略。
B.@ComponentScan注解默认规则是对当前包的子包中的Bean进行扫描。
C.@ComponentScan注解的basePackages属性用于自定义要扫描哪些包。
D.@ComponentScan注解只是定义了扫描范围,在此范围内带有特定注解的Bean才会被载入容器。

 答案解析:

@ComponentScan注解默认规则是对当前包及其子包中的Bean进行扫描。


SpringApplication调用的run方法作用包括(   )
A.获取监听器参数配置
B.打印Banner信息
C.创建并初始化容器
D.监听器发送通知

答案解析:

SpringApplication.run方法的一般执行流程:

  1. 初始化监听器:初始化SpringApplicationRunListeners,这些监听器用于在整个Spring应用的生命周期中发布事件。

  2. 发布ApplicationStartingEvent事件:在Spring应用实际启动之前发布。

  3. 设置环境:准备Environment(环境),这包括配置属性源和profile特定的配置。

  4. 发布ApplicationEnvironmentPreparedEvent事件:在Environment准备完成后发布。

  5. 打印Banner:如果showBanner属性设置为true,则打印启动Banner。

  6. 创建ApplicationContext:根据是否是web应用来创建相应的ApplicationContext(例如,AnnotationConfigApplicationContext或GenericApplicationContext)。

  7. 装配Context的环境变量:将Environment添加到ApplicationContext中。

  8. 注册Initializers:注册所有的ApplicationContextInitializer,这些Initializer可以用于在刷新上下文之前进行自定义配置。

  9. 发布ApplicationPreparedEvent事件:在ApplicationContext准备好但尚未刷新时发布。

  10. 注册BeanDefinition:注册所有的bean定义和import的@Configuration类。

  11. 遍历调用所有SpringApplicationRunListener的contextPrepared()方法:在ApplicationContext刷新之前调用。

  12. 调用ApplicationContext的refresh()方法:刷新ApplicationContext,装载所有的bean定义,创建bean实例,组装bean,初始化bean等。

  13. 注册CommandLineRunner和ApplicationRunner:查找并注册所有的CommandLineRunner和ApplicationRunner,这些可以在应用启动后执行一些命令行任务。

  14. 发布ApplicationStartedEvent事件:在ApplicationContext刷新完成后发布,表示Spring应用已经启动。

  15. 发布ApplicationReadyEvent事件:在所有Spring管理的bean都初始化完成并且应用已经准备好处理请求时发布。


下列关于@EnableAutoConfiguration注解说法正确的是(   )
A.该注解由组合注解@SpringBootApplication引入。
B.该注解作用是开启Spring Boot自动配置。
C.该注解会扫描各个jar包下的spring.factories文件,并加载文件中注册的AutoConfiguration类等。
D.@EnableAutoConfiguration的关键功能是通过@Import注解导入的ImportSelector来完成的。

答案解析:

@SpringBootApplication 注解确实是 Spring Boot 的核心注解,它组合了 @SpringBootConfiguration@EnableAutoConfiguration@ComponentScan 三个注解。下面是对这些注解的详细解释:

  1. @SpringBootConfiguration:标识当前类是一个 Spring Boot 配置类,它是 @Configuration 的特化,意味着可以定义配置信息。

  2. @EnableAutoConfiguration:这个注解告诉 Spring Boot 基于类路径中的 jar 包依赖为当前项目进行自动配置。例如,如果 classpath 下存在 spring-boot-starter-web,Spring Boot 会自动配置 Tomcat 和 Spring MVC。

  3. @ComponentScan:这个注解允许你通过指定的包路径来扫描并加载符合条件的组件或者bean,定义组件的扫描路径。

关于 @EnableAutoConfiguration 注解,您的描述也是正确的,它包含两个关键注解:

  1. @AutoConfigurationPackage:这个注

    关于Spring容器,下面说法错误的是(   )
    A.Spring容器也叫IoC容器,本质上就是一个工厂。
    B.Spring容器不但可以管理Bean,还能管理Bean的生命周期、作用域。
    C.一个Web应用中,通常只有一个Spring容器,该容器需要我们主动创建。
    D.Spring容器的顶层接口是BeanFactory,而常用的是其子接口ApplicationContext。

    解会自动将主启动类(带有 @SpringBootApplication 注解的类)所在包以及子包里面的所有组件扫描并加载到 Spring 容器中。这就是为什么通常建议将 Controller、Service、Dao 等层的代码放在主启动类所在包或其子包下的原因。

  2. @Import(AutoConfigurationImportSelector.class):这个注解用于导入自动配置类。AutoConfigurationImportSelector 类是 @Import 注解的实现,它负责根据条件选择需要导入的自动配置类。

AutoConfigurationImportSelector 类中的 selectImports() 方法会调用 loadSpringFactories() 方法,这个方法会加载 META-INF/spring.factories 文件中以 EnableAutoConfiguration 为键的自动配置类列表。这些类会被加载并应用到 Spring Boot 应用中,以实现自动配置。


关于Spring容器,下面说法错误的是(   )
A.Spring容器也叫IoC容器,本质上就是一个工厂。
B.Spring容器不但可以管理Bean,还能管理Bean的生命周期、作用域。
C.一个Web应用中,通常只有一个Spring容器,该容器需要我们主动创建。
D.Spring容器的顶层接口是BeanFactory,而常用的是其子接口ApplicationContext。

A. 正确。Spring容器也被称为IoC(控制反转)容器,它本质上是一个工厂,负责实例化、配置和组装对象。

B. 正确。Spring容器不仅管理Bean的创建,还管理Bean的生命周期和作用域,包括Bean的初始化、销毁以及单例、原型等作用域。

C. 错误。在Web应用中,通常存在多个Spring容器。至少会有一个用于管理整个应用的ApplicationContext(如通过web.xml配置的ContextLoaderListener),以及一个或多个特定于某个Web应用的ApplicationContext(如通过DispatcherServlet创建的)。这些容器可以有不同的作用域和生命周期,它们可以相互独立,也可以通过继承关系共享配置。

D. 正确。Spring容器的顶层接口是BeanFactory,而常用的是其子接口ApplicationContext,后者提供了更多的功能,如事件发布、国际化消息支持等。



下列关于Spring中Bean作用域的说法错误的是(   )
A.Bean的作用域可以通过@Scope注解来修改,该注解有五个不同的取值。
B.对定义为session的Bean,每次HTTP请求都会创建一个新的Bean。
C.每次通过Spring容器获取prototype定义的Bean时,容器都将创建一个新的Bean实例。
D.作用域为globalSession的Bean来讲,在一个全局的HTTP Session中,容器会返回该Bean的同一个实例

答案解析:Spring Bean的scope(作用域)_spring bean scope-优快云博客

bean的作用域由@scope注解来修改,该注解有五个不同的取值,分别是:singleton、prototype、request、session、global-session。

  1. singleton,在每一个Spring容器中,一个Bean定义只有一个对象实例(默认为singleton)
  2. prototype,允许Bean的定义可以被实例化任意次(每次调用都创建一个一个实例)
  3. request,在一次HTTP请求中,每个Bean定义对应一个实例。该作用域仅在基于Web的Spring上下文(例如SpringMVC)中才有效
  4. session,在一个HTTP Session中,每个Bean定义对应一个实例。该作用域仅在基于Web的Spring上下文(例如SpringMVC)中才有效
  5. global-session,在一个全局HTTP Session中,每个Bean定义对应一个实例。该作用域仅在基于Web的Spring上下文(例如SpringMVC)中才有效

下列选项中,不属于Spring Boot核心功能的是(   )
A.自动配置
B.起步依赖
C.端点监控
D.IoC和AOP

答案解析:IoC和AOP是Spring的核心功能。

Springboot入门到精通(超详细文档)_springboot文档-优快云博客


下列不属于Spring Boot注解的是(   )
A.@Controller
B.@EnableAutoConfiguration
C.@Conditional
D.@SpringBootApplication

答案解析:@Controller是Spring MVC的注解。

Springboot注解大全_springboot独有的注解-优快云博客

Spring MVC常用注解(绝对经典)_springmvc常用注解-优快云博客


下列关于Spring MVC注解的说法中,正确的是(   )
A.@ControllerAdvice用于定义控制器的通知类,它可以对指定的控制器进行增强。
B.@InitBinder用于定义控制器参数绑定规则,如转换规则,它会在参数转换之前执行。
C.@ExceptionHandler用于定义控制器发生异常后的操作。
D.@ModelAttribute用于定义控制器方法执行之前,对数据模型的操作。

答案解析:

@ControllerAdvice 用法-优快云博客

SpringBoot - @InitBinder注解详解-优快云博客

@ExceptionHandler详解-优快云博客

@ModelAttribute运用详解-优快云博客


下列选项中,不属于Spring IoC注入方式的是(   )
A.基于属性注入
B.基于构造方法注入
C.基于setter方法注入
D.基于getter方法注入

答案解析::Spring IoC的注入方式有三种,分别是基于属性注入、基于构造方法注入、基于setter方法注入。


MVC设计模式下软件分为哪三层(   )
A.Model
B.View
C.Controller
D.Context

答案解析:MVC设计模式下,Model代表的是数据,View代表的是用户界面,Controller代表的是数据的处理逻辑,它是Model和View这两层的桥梁。



关于Spring IoC,以下说法正确的是(   )
A.IoC是控制反转的意思,这是一种面向对象的编程思想。
B.IoC是控制反转的意思,这是一种面向切面编程的思想。
C.Spring采用依赖注入的方式,实现了IoC思想。
D.Spring采用依赖查找的方式,实现了IoC思想。

答案解析:oC是控制反转的意思,是一种面向对象编程的设计思想。在不采用这种思想的情况下,我们需要自己维护对象与对象之间的依赖关系,很容易造成对象之间的耦合度过高,在一个大型的项目中这十分的不利于代码的维护。IoC则可以解决这种问题,它可以帮我们维护对象与对象之间的依赖关系,并且降低对象之间的耦合度。


在Spring MVC中,若要实现上传功能,则需要使用的核心组件是(   )
A.HttpServletRequest
B.HttpServletResponse
C.MultipartHttpServletRequest
D.MultipartFile

答案解析:在Spring MVC中实现上传功能,主要依赖MultipartHttpServletRequest从读取请求中的文件,然后对读取到的MultipartFile类型进行处理。


下列Spring MVC注解中,可以映射多种HTTP请求类型的是(   )
A.@RequestMapping
B.@GetMapping
C.@PostMapping
D.@DeleteMapping

答案解析:@RequestMapping注解可以映射多种HTTP请求类型,具体的类型通过method配置项指定。为了简化method配置项,Spring 4.3版本新增了几个注解,这些注解可以看成是@RequestMapping注解的快捷方式,相当于固定了method配置项的值,这些注解包括:@GetMapping、@PostMapping、@PatchMapping、@PutMapping、@DeleteMapping。


若要在Controller中声明一个访问路径为“/set”,并且只能响应POST请求的方法,则下列注解中正确的是(   )
A.@RequestMapping("/set")
B.@RequestMapping(path = "/set")
C.@RequestMapping(path = "/set", method = RequestMethod.POST)
D.其他选项都正确

答案解析:

@RequestMapping的请求方式

(1)如果方法上的@RequestMapping注解没有设置method属性,则get和post请求默认都可以访问。

(2)如果方法上的@RequestMapping注解设置了method属性,则只能是相应的请求方式可以访问。


关于Spring注解,下列说法正确的是(   )
A.@Autowired是Spring提供的注解。
B.@Autowired是JDK提供的注解。
C.@Resource是Spring提供的注解。
D.@Resource是JDK提供的注解。

答案解析:

1.@Autowired注解是Spring提供的,而@Resource注解是J2EE本身提供的

    2.@Autowird注解默认通过byType方式注入,而@Resource注解默认通过byName方式注入,也可以通过byType方式注入。
    3.@Autowired注解注入的对象需要在IOC容器中存在,否则需要加上属性required=false,表示忽略当前要注入的bean,如果有直接注入,没有跳过,不会报错


下列选项中,属于Spring MVC的注解的有(   )
A.@RequestMapping
B.@RequestParam
C.@RequestBody
D.@PathVariable

答案解析:这种题有点奇葩

A.@RequestMapping:

        映射URL路径,将http的请求地址映射到控制器(controller)类的处理方法上。可以定义在控制器类上,也可以定义在类里面的方法上。

B.@RequestParam:

        把请求中的指定名称的参数传递给控制器中的形参赋值。

C.@RequestBody:

        主要用来接收前端传递给后端的json字符串中的数据的(请求体中的数据的),所以只能发送POST请求。当同时使用@RequestParam()和@RequestBody时,@RequestParam()指定的参数可以是普通元素、数组、集合、对象等等(即:当,@RequestBody 与@RequestParam()可以同时使用时,原SpringMVC接收参数的机制不变,只不过RequestBody 接收的是请求体里面的数据;而RequestParam接收的是key-value里面的参数,所以它会被切面进行处理从而可以用普通元素、数组、集合、对象等接收)。

D.@PathVariable:

        将 URL 中占位符参数绑定到控制器处理方法的入参中:URL 中的 {xxx} 占位符可以通过

@PathVariable(“xxx”) 绑定到操作方法的入参中。如:

        URL 中的 {xxx} 占位符可以通过@PathVariable(“xxx”) 绑定到操作方法的入参中。


spring基础题笔记系列暂完结

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值