Spring Boot 企业级开发课后题答案
黑马程序员
加粗字体为答案
转发请注明出处【感谢】
第一章
1.1 填空题
- Pivotal 团队在原有 spring 框架的基础上开发了全新的Spring Boot框架。
- Spring Boot框架在开发过程中大量使用 约定优先配置 的思想来摆脱框架中各种复杂的手动配置。
- Spring Boot 2.1.3版本要求Java 8 及以上版本的支持。
- Spring Boot2.1.3版本框架官方声明支持的第三方项目构建工具包括有 maven(3.3+) 和 gradle(4.4+)
- @RestController 注解是一个组合注解,主要包含 @Controller 和 @ResponseBody 两个核心注解。
1.2 判断题
- Spring Boot 2.1.3版本要求Java7及以上版本的支持,同时兼容Java 11。(错)
- 使用Spring Initializr搭建Spring Boot项目,可以选择任意不同的Spring Boot版本,而无须修改。(错)
- 使用Spring Initializr 搭建的Spring Boot项目会默认生成项目启动类。( 对 )
- 编写单元测试需要提前加入spring- boot-starter-test测试依赖启动器。(对)
- Spring Boot提供了对所有第三方技术框架的整合支持和版本管理。(错)
1.3 选择题
- 以下选项中,哪些属于Spring Boot的优点? (ACD)( 多选)
A.可快速构建独立的Spring应用
B.无须打包即可快速部署
C.提供依赖启动器简化构建配置
D.极大程度地自动化配置了Spring和第三方库 - IDEA 界面中,[Configure 1-[Projet Deiauts 1中的Poiet Sucture主要作用是(D)
A.用于全局JDK初始化设置
B.用于全局Maven初始化设置
C.用于全局运行环境设置
D.以上都不对 - 下列关于Sping Boo项目各个包作用的说法, 正确的是( ABCD)(多选)
A. resources下static中用于存放静态资源文件
B. resources 下emplales中用于存放模板文件
C. aplicaion poperties是项目的全局配置文件
D.以上都正确 - 下列关于Spring Boot依赖管理的说法,正确的是( B)
A. spring-boot-starter- parent父依赖可以为项目提供整合的子依赖文件
B. spring-boot-starter-parent 父依赖可以为项目提供整合的子依赖版本管理
C. Web场景开发依赖spring- boot- starter- -web 可以针对所有Web场景开发
D. Web场景开发依赖spring-boot- starter- -web的版本需要自行管理 - 下列关于Spring Boot自动配置原理的说法,错误的是(A)
A. @SpringBootApplication 只包含@SpringBooConfiguration、@EnableAutoConfiguration、@ComponentScan 3个注解
B. @SpringBootConfiguration 注解表示当前类为-一个配置类并可以被组件扫描器扫描
C. @EnableAutoConfiguration 的作用是启动自动配置,向容器中导入所有选中的自动配置类
D. @ComponentScan注解的主要作用是扫描指定包及其子包下所有注解类文件作为Spring容器的组件使用
第二章
2.1 填空题
- 默认情况下, Spring Boot生成的全局配置文件是 application.properties
- Spring Boot项目中,application.yaml 文件使用 key: (空格)value 格式配置属性。
- Spring Boot提供的 @ConfigurationProperties 注解可以批量将配置文件的属性注入Bean对象。
- 使用 @Value 注解注入配置文件属性时,支持SpEL表达式语法。
- Spring Boot中能够使用 @Profile 注解进行多环境配置。
2.2 判断题
- application.yaml配置文件的属性类型只能是数组类型。(错)
- 使用@ConfigurationProperties 注解注入属性值时,必须为对应的属性提供setter方法。(对)
- @Value注解是 Spring Boot提供的,用来读取配置文件的属性并能够批量注入Bean (错)
- @Value注解支持所有数据类型的属性读取和注入。(错)
- spring boot 可以使 @PropertiesResoure 注解引入xML配置文件。(错)
2.3 选择题
- 下列关于 Spring Boo全局配置文件的说法,正确的是(ABC)。(多选)
A Sping Boot 支持 application.properties 全局配置文件
B SpingBoot 支持 application.yaml 全局配置文件
C SpingBoot 支持application.yml 全局配置文件
D SpingBoot 全局配置文件必须在项目resouces 根目录下 - 下列关于YAML配置文件的说法,正确的是(B)
A. YAML 配置文件的内容是key: vlaue"形式的键值对,并使用缩进式写法
B. YAML配置文件的行内式写法配置单列集合属性, 包含属性值的中括号“[]”可以省略
C. YAML 配置文件的行内式写法配置双列集合属性,包含属性值的大括号“{}” 可以省略
D.以上都不对 - 下列关于ConfiurationProperies 注解的说法中,正确的是(B)
A. @ConfigurationProperties 注解只能作用于类
B.使用@ConfigurationProperties 注解为Bean注入属性时,必须为Bean设置setter
方法
C. @ConfigurationProperties注解必须和@Component结合使用
D.要想使@ConfigurationProperties 注解注入的属性生效,必须使用@EnableConfigurationProperties注解开启注入 - 下列关于@ConfigurationProperties 和@Value注解的说法,正确的是(C)
A. @ConfigurationProperties 和@Value注解都是Spring Boot框架自带的
B. 进行属性值注入时,Coniguratioroperties和@Value注解配置中必须设置属性的setter方法
C. CnfigurationProperties 注解进行配置文件属性值注入时,支持JSR303数据校验
D. @Value 注解进行配置文件属性值注入时,支持松散绑定语法 - 下列关于Spring Boot的Profle多环境配置的说法,错误的是(D)
A. Spring Boot提供了两种多环境配置的方式: Profile 文件多环境配置和@Proflie注解多环境配置
B. Profle配置文件的名必须满足aplpaion-poroi properties的格式
C可以在项目全局配置文件中配置spring poflis acive属性激活指定的多环境配
置文件
D.在多个自定义类上直接使用@Profile注解可以进行多环境配置
第三章
3.1 填空题
- MyBatis为了利用Spring Boot的便利性,适配了对应的依赖启动器 mybatis-spring-boot-starter
- Spring Boot 2.x版本默认使用的是 hikari 数据源。
- 在Spring Boot项目启动类上添加了 @MapperScan(“xxx”) 注解,来替代@Mapper注解。
- Spring Data JPA中,@Entity 标注在类上,还要使用 name 属性指定具体映射的表名。
- Redis 提供了多种功能特性,可用作非关系型数据库、缓存插件、消息中间件 等。
3.2 判断题
- Spring Boot官方为所有常用技术框架都提供了对应的依赖启动器。(错)
- Spring Boot为整合MyBatis技术框架提供了版本管理。(错)
- Spring Boot操作MySQL数据库时,还必须配置指定的数据源类型。(错)
- Spring Boot全局配置文件设置Druid数据源相关参数后,还需要自定义配置类注入这些属性。(对)
- Spring Boot JPA中映射的实体类属性上的@Column注解可以省略。(对)
3.3 选择题
- 下列关于Spring Boot整合MyBatis实现的说法,正确的是(C)。
A. Spring Boot整合MyBatis必须提供mybatis-spring-boot-starter 依赖
B. @MapperScan(“xxx”)注 解的作用和@Mapper注解一样
C.在全局配置文件中配置MyBatis的XML映射文件位置要使 mybatis.mapper-locations属性
D.使用注解方式编写MyBatis接口文件数据修改方法时,还需要使用@Transactional 注解 - 下列关于 Spring Data JPA映射的实体类中相关注解的说法,正确的是(D)
A.使用Spring Data JPA进行数据查询映射时,需要在配置文件中开启驼峰命名映射
B. 使用@Entity注解时,还要使用name属性指定具体映射的表名
C. @ld注解必须标注在类属性上,表示主键对应的属性
D. @Transient注解表示指定属性不是到数据库表的字段的映射,ORM框架将忽略该属性 - 使用Spring Boot整合Spring Data JPA编写Repository接口时,下列说法错误的是(BC)。(多选)
A.自定义Repository接口可以继承CurdRepository接口
B.可以在方法上添加@Update注解结合SQL语句实现数据修改
C.可以在方法上添加@Delete注解结合SQL语句实现数据删除
D.进行数据变更操作时,必须在Repository接口方法上添加@Transient 注解 - Redis 是一个开源内存中的数据结构存储系统,可以用作(ABCD)。 (多选)
A.数据库
B.缓存中间件
C. 消息中间件
D.以上都正确 - 当Redis作为数据库时,下列与Spring Boot整合使用的相关说明,正确的是(A)
A. @RedisHash(“persons”)用于指定 操作实体类对象在Redis数据库中的存储空间
B. @ld用于标识实体类主键,需要手动指定id生成策略
C.使用Redis数据库,必须为实体类属性添加@Indexed属性生成二级索引
D.编写操作Redis数据库的Repostory接口文件时,需要继承JpaRepository 接口
第四章
4.1 填空题
- 针对于WebFlux 框架的整合实现,Spring Boot 实现了与 FreeMarker 、Thymeleaf 和 Mustache模板引擎技术的整合支持和自动化配置。
- Thymeleaf 是适用于Web 和独立环境的现代服务器端Java模板引擎。
- 针对HTML页面处理,Thymeleaf 的 th:each 属性可以进行数据遍历。
- 使用Thymeleaf模板进行HTML页面处理,可以使用 data-th-* 属性替换th:*属性进行页面开发。
- Thymeleaf 模板中使用 ${#locale.country} 可以动态获取当前用户所在的国家信息。
4.2 判断题
- Spring Boot不能使用JSP进行项目开发。(错)
- 如果想要使用Thymeleaf模板进行纯HTML 5的页面开发,可以使用data-th-* 属性替换th: *属性进行页面开发。(对)
- Thymeleaf 是针对Web开发中HTML静态页面的处理,实现动态数据展示。(错)
- SpringBoot中编写国际化时,必须要在全局配置文件进行国际化文件配置。(错)
- 国际化文件的名称必须严格按照“文件前缀名_语言代码_国家代码.properties"的形式命名。(对)
4.3 选择题
- 以下选项中,Spring Boot整合Spring MVC框架支持的模板引擎技术有(ABCD)。(多选)
A. FreeMarker
B. Groovy
C. Mustache
D. Thymeleaf - 关于Spring Boot整合JSP模板技术的限制,以下说法错误的是(D)
A. Spring Boot默认的JAR包部署方式不支持JSP模板
B. Undertow嵌入式容器部署Spring Boot项目,不支持JSP模板
C.使用JSP模板时,无法对默认的错误处理器进行覆盖
D.使用JSP模板时,无法自定义错误页面 - Thymeleaf 支持处理哪些模板页面? (ABCD)( 多选)
A. HTML
B. XML
C. JS
D. CSS - 以下关于Thymeleaf模板中th:*属性的说法,错误的是(A)。
A. th:forEach 属性用来进行数据遍历
B. th:utext 属性进行文本内容展示,且不进行转义
C. th:fragment属性用来声明片段
D. th:value 属性用于内容修改 - Spring Boot中,可以存放静态资源文件的位置有(ABCD)。(多选)
A. 项目 根路径下的METANF/resoures/文件夹下
B.项目根路径下的resources及其子文件夹下
C.项目根路径下的static文件夹下
D.项目根路径下的public及其子文件夹下
第五章
5.1 填空题
- Spring Boot项目中定制Spring MVC的扩展功能,需要提供实现WebMvcConfigurer 接口的配置类。
- WebMvcConfigurer 接口中的 addViewControllers() 方法可以定制视图管理。
- WebMvcConfigurer 接口中的 addInterceptors() 方法可以定制自定义的拦截器。
- Spring Boot中,使用路径扫描方式整合Servlet 组件时,需要用 @ServletComponentScan 注解开启组件扫描。
- Spring Boot整合Spring MVC实现文件上传时,默认单个文件上传大小限制为1MB。
5.2 判断题
- Spring Boot为整合Spring MVC实现Web开发提供了欢迎页index.html支持。(对)
- Spring Boot中实现Spring MVC的扩展功能,要提供实现WebMvcConfigurer接口的配置类,并开启@EnableWebMvc注解。(错)
- Spring Boot中整合Servlet 的Listener组件时,在自定义Listener 上添加@Component 即可生效。(错)
- Spring Boot整合Spring MVC实现中文名文件下载时,针对IE内核浏览器需要转码为UTF-8(对)
- spring boot 提供的打包插件spring-boot-maven-plugin 可以将项目打成Jar包和War包。(对)
5.3 选择题
- SpingBoot为整合Spring MVC实现Web开发,提供的功能特性不包括(C)。
A. 配置视图解析器
B. 对WebJars的支持
C. 对拦截器的自动配置
D. 对HtpMessageConverters 消息转换器的支持 - sngaat Sevet组件涉及的注册Ben组件有(ACD)。(多选)
B. InterceptorRegistationBean
A. ServletRegistrationBean
D. ServletL istenerRegistrationBean
C. FilterRegistrationBean - Sp er中使用路径扫描的方式整合内嵌式Sevet组件时,需要使用的注解有(ABC)。(多选)
A. @WebFilter
B. @ServletComponentScan
C. @WebListener
D. @WebInterceptor - 下列关于Spring Boot整合Spring MVC实现文件上传及下载的说法中,正确的是(B)
A. 必须使用spring.servlet.multipart.max-file-size来设置单个上传文件的大小限制
B.处理上传文件方法中,可以使用List类型的参数来接收处理单个或多个上传文件
C.文件上传存储目录“F:/file/” 需要提前创建好
D.对中文文件进行下载时,如果没有进行中文转换,下载的中文文件内容会出现乱码 - 下列关于Spring Boot项目War包方式打包部署的说法中,错误的是(C)
A. 必须使用 标签将Spring Boot项目默认的Jar包方式修改为War
B. 需要将sring-boot-starter-tomcat使用provided声明为已提供provided
C. 必须让主程序启动类继承SpringBootServletInitializer类并实现configure()方法
D. 以War包方式部署项目进行访问,必须在访问路径上添加打包后的项目名
第六章
6.1 填空题
- Spring Boot中 @EnableCaching 注解用于开启基于注解的缓存支持。
- @Cacheable 注解是由Spring框架提供的,通常用在数据查询缓存方法上。
- Spring Boot中进行缓存存储时,对于- -个参数的方法,其key值是 默认参数值
- Simple 缓存组件是Spring Boot默认的缓存管理组件,它默认使用内存中的 ConcurrentHashMap 进行缓存存储。
- Redis 操作客户端类中,StringRedisTemplate 专门针对<String, String>字符串类型的数据进行操作。
6.2 判断题
- @EnableCaching 注解是Spring Boot框架提供的,用于开启基于注解的缓存支持。(错)
- @Cacheable 注解的cacheNames属性名可以省略。(对)
- @Cacheable注解的unless属性在指定条件为true 时,方法的返回值就不会被缓存。(对)
- 在对实体类数据进行Redis默认缓存存储时,如果没有实现序列化,就会出现类型转换异常的错误。(错)
- 自定义RedisTemplate组件时,方法名必须是redisTemplate(错)
6.3 选择题
- 下列关于Spring Boot中提供的缓存管理的相关注解的说法,正确的是(D)
A. @EnableCaching 注解是spring boot提供的, 用于开启基于注解的缓存支持
B. @Cacheable注解作用于方法上,用来对查询结果进行缓存
C. @CacheEvict 注解用于更新缓存数据
D. @CacheConfig 注常使用在类上,主要用于统筹管理类中所有使用@Cacheable、@CachePut和@CacheEvict注解标注的方法中的公共属性 - 下列关于springboot中Redis缓存注解相关属性的说法,错误的是(C)
A vale 和cacheNames属性作用相同,用于指定缓存的名称空间
B. key 属性的作用就是指定缓存数据对应的唯一标识, 默认使用注解标记的方法参数值
C. unless属性的作用是当指定的条件为true时,方法的返回值就会被缓存
D. sync 属性表示数据缓存过程中是否使用异步模式,默认值为false - 下列关于Spring Boot中ReisSTemplate进行数据缓存管理的说法, 正确的是(ACD)(多选)
A. RedisTemplate 是spring Data Redis 提供的,可以对<Object, Object>类型数据进行操作
B. RedisTemplate 类的set()方法可以进行数据缓存存储
C. RedsTemplate 类的delect()可以进行缓存数据删除
C. RedsTemplate 类的expire()可以进行设置缓存有效期 - Spring Boot中支持的缓存组件有(ABCD)(多选)
A. Jcache
B. EnCache2x
C. Redis
D. Caffeine - 下列关于将Spring Boot 定制Redis缓存序列化机制的说法,错误的是(A)
A. 自定义RedisTemplate组件时,方法名必须为为redisTemplate
B. 在定制序列化方式中,要定义一个ObjectMapper 用于进行数据转换设置
C. Spring Boot 1x 版本中,定制 RedisTemplate组件序列化配置后,就完成了基于API和注解方式Redis序列化的定制
D. 使用自定义RedisTmplate序列化机制缓存存储实体类数据,实体类不用再实现序列化
第七章
7.1 填空题
- SpringBoot整合SpringSecurity安全框架实现的安全管理功能有 MVC Security、WebFlux Security、OAuth2、Actuator Security。
- Security默认提供一 个可登录的用户信息,用户名为user, 密码为随机生成
- 重写WebSecurityConfigurerAdapter类的 configure(AuthenticationManagerBuilder auth) 方法可以自定义用户认证。
- 重写WebSecurityConfigurerAdapter类的 configure(HttpSecurity http) 方法可以对基于HTTP的请求访问进行控制。
- 自定义WebSecurityConfigurerAdapter类上的 @EnableWebFluxSecurity 注解用于开启基于WebFlux Security的安全支持。
7.2 判断题
- 项目中引入spring-boot- starter-security依赖后,还需要使用@EnableSecurity开启安全管理支持。(错)
- WebSecurityConfigurerAdapter类的cnfigure(uttpSecurit htp)方法用于构建认证管理器(错)
- 初始化权限表数据时,权限值必须带有 "ROLE."前缀。(对)
- 定义JDBC身份认证时,定义权限查询的sQL语句必须返回用户名、密码和权限几个字段信息。(错)
- 定义UsetaisService身份认证时,如果用户为空,需要抛出UserNotFoundException异常。(错)
7.3 选择题
- Spring Security提供了多种自定义认证方式,包括有(ABCD)。(多选)
A. JDBC Authentication
B. LDAP Authentication
C. AuthenticationProvider
D. UserDetailsService - 下列关于使用JDBC身份认证方式创建用户/权限表以及初始化数据性说法,错误的是(D)
A.用户表中的用户名username必须唯一
B.创建用户表时,必须额外定义一个tinyint类型的字段
C.初始化用户表数据时,插入的用户密码必须是对应编码器编码后的密码
D.初始化角色表数据时,角色值必须带有“ROLE_” 前缀 - 下列关于configue(HttpSecurity http)方法中参数HttpSecurity类的说法,正确的是(ABCD)(多选)
A. autreRequests()法开启基于HtSesletReque请求访问的限制
B. formLogin()方法开启基于表单的用户登录
C. rememberMe()方法开启记住我功能
D. csrf()方法配置 CSRF跨站请求伪造防护功能 - 下列关于自定义用户登录中的相关说法,错误的是(B)。
A loginPage(Sting loginPage)指定用户登录页面跳转路径,默认为GET请求的 /login
B. failureUrl (Sting authenticationFailureUrl 指定用户登录失败后的跳转地址,默以为/login?failure
C. loginProcessingUrl(String loginProcessingUrl)指定登录表单提交的路径,默认为POST,请求的 /login
D. 项目加入Security 后,可以不对 static 文件夹下的静态资源文件进行统一放行处理 - 下列关于使用Security 整合Thymeleaf 实现页面的管理的说法,错误的是(B)
A. Spring Boot2.1.3版本中添加thymeleaf-extras -springsecurity5依赖不需要手动指
定版本号
B. sec:authorize="! isAuthenticated()"用于判断用户没有认证
C. sec:authorize="hasAuthority(‘ROLE vip’)"用于判断用户是否有ROLE_ vip权限
D. sec:authentication=“name” 属性用于显示登录用户名name
第八章
8.1 填空题
- 目前开源的消息中间件常用的有ActiveMQ、RabbitMQ、Kafka、 RocketMQ等。
- RabbitMQ是基于 AMQP 协议的轻量级、可靠、可伸缩和可移植的消息代理。
- 在Work queues工作模式中,连接消息队列的多个消息消费者通过 轮询 的方式消费
消息。 - 在Publish/Subscribe工作模式中,必须先配置-一个 fanout 类型的交换器。
- RabbitMQ 服务默认提供了两个端口号 5672 和 15672
8.2 判断题
- ActiveMQ性能相对较好,在如今的高并发、大数据处理的场景下非常适用。(错)
- ActiveMQ是Apache公司出品的、采用Java语言编写的基于JMS规范的面向消息的中间件。(对)
- RabbitMQ 中的Work queues工作模式不需要设置交换器。(对)
- 在Publish/Subscribe工作模式中,每个消息消费者都会接收消息。(对)
- SpringBoot中加入RabbitMQ依赖后,无须任何配置就可以使用RabbitMQ消息中间件。(对)
8.3 选择题
- 开发中,使用到消息服务的需求场景主要包括(ABCD)。(多选)
A.异步处理
B. 应用解耦
C.流量削锋
D.分布式事务管理 - 以下关于消息中间件的说法,错误的是(D)。
A. 以下关于浪物的间法,请音开发的开源月息队列系统,基于AMCP协收
B Redis服务可以作为消息中间件提供服务
C. RocketMQ 是Apache的顶级项目,具有高吞吐量、高可用等特点
C. RoheN是Apacle出品的、基于JMNS协议的高性能中间件 - RabbiMQ中提供了哪几种交换器类型? (ABCD)(多选)
A. direct
B. fanout
C. topic
D. headers - RabbitMQ提供的工作模式不包括(A)。
A.单点模式
B.发布订阅模式
C.路由模式
D. Headers 模式 - 以下关于基于注解方式定制RabbitMQ消息组件中的相关注解及说法,错误的是(A)。
A.需要使用@EnableRabbit 开启基于注解的支持
B. @RabbitL istener标记在消息消费者方法上,会立即监听并消费消息队列中的消息
C. @RabitListener 注解的queues属性可以定制消息队列
D. QueueBinding 注解包括有value type、 key 等属性
第九章
9.1 填空题
- Spring Boot中使用 @EnableAsync 注解来开启基于注解的异步任务支持。
- Spring 框架提供了一个 @Async 注解来定义异步方法。
- Spring Boot中处理有返回值的异步方法时,可以定义返回值为 Future 类型。
- @Scheduled 注解的 fixedDelay或fixedDelayString 属性表示在上一次任务执行结束后在指定时间后继续执行下一次任务。
- Spring Boot需要在项目启动类上使用 @EnableScheduling 注解来开启基于注解的定时任务支持。
9.2 判断题
- @EnableScheduling 注解是Spring Boot提供的,用于开启基于注解方式的定时任务(对)
- aSchedule注解的ixedRate属性表示
云每隔指定时间执行一 次任务。(对) - aScheu led注解的eron属性值中星期字段值
0表示星期一。(错) - @Scheduled 注解的fixedRate
属性用来指定每相隔一段时间重复执行一 次定时任务,
单位是毫秒。(对) - SoringBoot 中配置QQ邮件服务器用户信息时,
要配置准确的用户名和密码。(错)
9.3 选择题
- C
- D
- A
- AB
- ABCD