SpringBoot的细节问题

一、重点填空

  1. Pivotal 团队在原有 spring 框架的基础上开发了全新的Spring Boot框架。
  2. Spring Boot框架在开发过程中大量使用 约定优于配置 的思想来摆脱框架中各种复杂的手动配置。
  3. Spring Boot 2.1.3版本要求 Java 8 及以上版本的支持。
  4. Spring Boot2.1.3版本框架官方声明支持的第三方项目构建工具包括有 maven(3.3+) 和 gradle(4.4+)
  5. @RestController 注解是一个组合注解,主要包含 @Controller 和 @ResponseBody 两个核心注解。
  6. 默认情况下, Spring Boot生成的全局配置文件是 application.properties
  7. Spring Boot项目中,application.yaml 文件使用 key: (空格)value 格式配置属性。 可不是缩进啊
  8. Spring Boot提供的 @ConfigurationProperties 注解可以批量将配置文件的属性注入Bean对象。
  9. 使用 @Value 注解注入配置文件属性时,支持SpEL表达式语法。
  10. Spring Boot中能够使用 @Profile 注解进行多环境配置。
  11. MyBatis为了利用Spring Boot的便利性,适配了对应的依赖启动器 mybatis-spring-boot-starter
  12. Spring Boot 2.x版本默认使用的是 hikari 数据源。
  13. 在Spring Boot项目启动类上添加了 @MapperScan(“xxx”) 注解,来替代@Mapper注解。
  14. Spring Data JPA中,@Entity 标注在类上,还要使用 name 属性指定具体映射的表名。
  15. Redis 提供了多种功能特性,可用作非关系型数据库、缓存插件、消息中间件 等。
  16. 针对于WebFlux 框架的整合实现,Spring Boot 实现了与 FreeMarker 、Thymeleaf 和 Mustache模板引擎技术的整合支持和自动化配置。
  17. Thymeleaf 是适用于Web 和独立环境的现代服务器端Java模板引擎。
  18. 针对HTML页面处理,Thymeleaf 的 th:each 属性可以进行数据遍历。
  19. 使用Thymeleaf模板进行HTML页面处理,可以使用 data-th-* 属性替换th:*属性进行页面开发。
  20. Thymeleaf 模板中使用 ${#locale.country} 可以动态获取当前用户所在的国家信息。
  21. Spring Boot项目中定制Spring MVC的扩展功能,需要提供实现 WebMvcConfigurer 接口的配置类。
  22. WebMvcConfigurer 接口中的 addViewControllers() 方法可以定制视图管理。
  23. WebMvcConfigurer 接口中的 addInterceptors() 方法可以定制自定义的拦截器。
  24. Spring Boot中,使用路径扫描方式整合Servlet 组件时,需要用 @ServletComponentScan 注解开启组件扫描。
  25. Spring Boot整合Spring MVC实现文件上传时,默认单个文件上传大小限制为 1MB
  26. Spring Boot中 @EnableCaching 注解用于开启基于注解的缓存支持。
  27. @Cacheable 注解是由Spring框架提供的,通常用在数据查询缓存方法上。
  28. Spring Boot中进行缓存存储时,对于一个参数的方法,其key值是 默认参数值
  29. Simple 缓存组件是Spring Boot默认的缓存管理组件,它默认使用内存中的 ConcurrentHashMap 进行缓存存储。
  30. Redis 操作客户端类中,StringRedisTemplate 专门针对字符串类型的数据进行操作。RedisTemplate可以操作,其子类StringRedisTemplate操作
  31. SpringBoot整合SpringSecurity安全框架实现的安全管理功能有 MVC Security、WebFlux Security、OAuth2、Actuator Security。
  32. Security默认提供一 个可登录的用户信息,用户名为user, 密码为随机生成
  33. 重写WebSecurityConfigurerAdapter类的 configure(AuthenticationManagerBuilder auth) 方法可以自定义用户认证。
  34. 重写WebSecurityConfigurerAdapter类的 configure(HttpSecurity http) 方法可以对基于HTTP的请求访问进行控制。
  35. 自定义WebSecurityConfigurerAdapter类上的 @EnableWebFluxSecurity 注解用于开启基于WebFlux Security的安全支持。
  36. 目前开源的消息中间件常用的有 ActiveMQ、RabbitMQ、Kafka、 RocketMQ等。
  37. RabbitMQ是基于 AMQP 协议的轻量级、可靠、可伸缩和可移植的消息代理。
  38. 在Work queues工作模式中,连接消息队列的多个消息消费者通过 轮询 的方式消费
  39. 在Publish/Subscribe工作模式中,必须先配置一个 fanout 类型的交换器。
  40. RabbitMQ 服务默认提供了两个端口号 5672 和 15672
  41. Spring Boot中使用 @EnableAsync 注解来开启基于注解的异步任务支持。
  42. Spring 框架提供了一个 @Async 注解来定义异步方法。
  43. Spring Boot中处理有返回值的异步方法时,可以定义返回值为 Future 类型。
  44. @Scheduled 注解的 fixedDelay或fixedDelayString 属性表示在上一次任务执行结束后在指定时间后继续执行下一次任务。
  45. Spring Boot需要在项目启动类上使用 @EnableScheduling 注解来开启基于注解的定时任务支持。

二、细节把控

1.使用Spring Initializr 搭建的Spring Boot项目会默认生成项目启动类。

2.编写单元测试需要提前加入spring- boot-starter-test测试依赖启动器。

3.使用@ConfigurationProperties 注解注入属性值时,必须为对应的属性提供setter方法。

4.Spring Boot全局配置文件设置Druid数据源相关参数后,还需要自定义配置类注入这些属性。

5.Spring Boot JPA中映射的实体类属性上的@Column注解可以省略。

6.如果想要使用Thymeleaf模板进行纯HTML 5的页面开发,可以使用data-th-* 属性替换th: *属性进行页面开发。

7.国际化文件的名称必须严格按照“文件前缀名_语言代码_国家代码.properties"的形式命名。

8.Spring Boot为整合Spring MVC实现Web开发提供了欢迎页index.html支持。

9.Spring Boot整合Spring MVC实现中文名文件下载时,针对IE内核浏览器需要转码为UTF-8。

10.spring boot 提供的打包插件spring-boot-maven-plugin 可以将项目打成Jar包和War包。

11.@Cacheable 注解的cacheNames属性名可以省略。

12.@Cacheable注解的unless属性在指定条件为true 时,方法的返回值就不会被缓存。

13.初始化权限表数据时,权限值必须带有 "ROLE."前缀。

14.ActiveMQ是Apache公司出品的、采用Java语言编写的基于JMS规范的面向消息的中间件。

15.RabbitMQ 中的Work queues工作模式不需要设置交换器。

16.在Publish/Subscribe工作模式中,每个消息消费者都会接收消息。

17.SpringBoot中加入RabbitMQ依赖后,无须任何配置就可以使用RabbitMQ消息中间件。

18.@Schedule注解的fixedRate属性表示每隔指定时间执行一次任务。

19.@Scheduled 注解的fixedRate属性用来指定每相隔一段时间重复执行一次定时任务,单位是毫秒。

20.IDEA 界面中,Configure —>Project Defauts 中的Project Structure主要作用是用于全局JDK初始化设置

21.spring-boot-starter-parent 父依赖可以为项目提供整合的子依赖版本管理。

22.@SpringBootConfiguration 注解表示当前类为一个配置类并可以被组件扫描器扫描

23. @EnableAutoConfiguration 的作用是启动自动配置,向容器中导入所有选中的自动配置类

24.@ComponentScan注解的主要作用是扫描指定包及其子包下所有注解类文件作为Spring容器的组件使用

25.YAML配置文件的行内式写法配置单列集合属性, 包含属性值的中括号“[]”可以省略

26.使用@ConfigurationProperties 注解为Bean注入属性时,必须为Bean设置setter方法

27.@CnfigurationProperties 注解进行配置文件属性值注入时,支持JSR303数据校验

28.Spring Boot提供了两种多环境配置的方式: Profile 文件多环境配置和@Proflie注解多环境配置

29.Profle配置文件的名必须满足aplpaion-{profile}-properties的格式

30.可以在项目全局配置文件中配置spring.proflles.acive属性激活指定的多环境配置文件

31.在全局配置文件中配置MyBatis的XML映射文件位置要使 mybatis.mapper-locations属性

32.@Transient注解表示指定属性不是到数据库表的字段的映射,ORM框架将忽略该属性

33.当Redis作为数据库时,@RedisHash(“persons”)用于指定 操作实体类对象在Redis数据库中的存储空间

34.Spring Boot默认的JAR包部署方式不支持JSP模板 

35.Undertow嵌入式容器部署Spring Boot项目,不支持JSP模板

36.使用JSP模板时,无法对默认的错误处理器进行覆盖 

37.th:utext 属性进行文本内容展示,且不进行转义

38.th:fragment属性用来声明片段

39. th:value 属性用于内容修改

40.SpingBoot为整合Spring MVC实现Web开发,提供的功能特性包括配置视图解析器、对WebJars的支持和对HtpMessageConverters 消息转换器的支持

41.Spring Boot整合Spring MVC处理上传文件方法中,可以使用List类型的参数来接收处理单个或多个上传文件

42.必须使用 标签将Spring Boot项目默认的Jar包方式修改为War

43.需要将sring-boot-starter-tomcat使用provided声明为已提供provided

44.以War包方式部署项目进行访问,必须在访问路径上添加打包后的项目名

45.@CacheConfig 注常使用在类上,主要用于统筹管理类中所有使用@Cacheable、@CachePut和@CacheEvict注解标注的方法中的公共属性

46.在定制序列化方式中,要定义一个ObjectMapper 用于进行数据转换设置

47.Spring Boot 1x 版本中,定制 RedisTemplate组件序列化配置后,就完成了基于API和注解方式Redis序列化的定制

48.使用自定义RedisTmplate序列化机制缓存存储实体类数据,实体类不用再实现序列化

49.Spring Boot中借助 Thymeleaf发送模板邮件,需要使用MimeMessageHelper帮助类,并设置 multipart多部件使用为true,需要使用Context 对象定制邮件动态内容,需要使用解析器 TemplateEngine的process(String template, lContext context)方法进行模板解析,可以通过数组的形式一次向多个用户发送邮件

50.Spring Boot中发送复杂邮件,需要创建 MimeMessage 对象,需要使用MimeMessageHelper并设置multipart多部件使用为true

51.RabbiMQ中提供的交换器类型有direct, fanout,topic, headers

52.开发中,使用到消息服务的需求场景主要包括,异步处理,应用解耦,流量削锋,分布式事务管理

53.configue(HttpSecurity http)方法中参数HttpSecurity类,autreRequests()法开启基于HtSesletReque请求访问的限制, formLogin()方法开启基于表单的用户登录, rememberMe()方法开启记住我功能,csrf()方法配置 CSRF跨站请求伪造防护功能

54.Spring Security提供了多种自定义认证方式,包括有JDBC Authentication  , LDAP Authentication  , AuthenticationProvider  ,UserDetailsService

55.Spring Boot中支持的缓存组件有Jcache,EnCache2x, Redis,Caffeine

56.Spring Boot中RedisTemplate进行数据缓存管理,RedisTemplate 是spring Data Redis 提供的,可以对类型数据进行操作。RedsTemplate 类的delect()可以进行缓存数据删除。RedsTemplate 类的expire()可以进行设置缓存有效期

57.Spring boot中使用路径扫描的方式整合内嵌式Sevlet组件时,需要使用的注解有@WebFilter,@ServletComponentScan,@WebListener

58.Spring boot整合 Sevlet组件涉及的注册Ben组件有ServletRegistrationBean,FilterRegistrationBean  ServletListenerRegistrationBean 

59.Spring Boot中,可以存放静态资源文件的位置有项目 根路径下的METANF/resoures/文件夹下,项目根路径下的resources及其子文件夹下,项目根路径下的static文件夹下,项目根路径下的public及其子文件夹下

60.Thymeleaf 支持处理的模板页面有HTML,XML,JS, CSS

61.Spring Boot整合Spring MVC框架支持的模板引擎技术有FreeMarker, Groovy,Mustache,Thymeleaf

62.Redis 是一个开源内存中的数据结构存储系统,可以用作数据库,缓存中间件,消息中间件

63.使用Spring Boot整合Spring Data JPA编写Repository接口时自定义Repository接口可以继承CurdRepository接口,进行数据变更操作时,必须在Repository接口方法上添加@Transient 注解

64.Sping Boot 支持 application.properties 全局配置文件,SpingBoot 支持 application.yaml 全局配置文件,SpingBoot 支持application.yml 全局配置文件

65.Sping Boot项目各个包,resources下static中用于存放静态资源文,resources 下templales中用于存放模板文件,aplicaion.properties是项目的全局配置文件

66.Spring Boot的优点有可快速构建独立的Spring应用、提供依赖启动器简化构建配置、极大程度地自动化配置了Spring和第三方库

67.定时任务注解中表示每月的26日每一分钟都执行:@Scheduled(cron = "0 * * 26 * ?”)

68.关于@Scheduled的相关属性,initialDelayString 表示在 fixedRate或 fixedDelay任务第一次执行之前要延迟的毫秒数

69. Spring Boot项目中引入 spring-boot-starter-web依赖后可以进行异步任务管理

70. @EnableAsync 注解用来开启基于注解的异步任务支持

71.异步任务可以极大地缩减总流程的执行时间

72.基于注解方式定制RabbitMQ消息组件中的相关注解,@RabbitListener标记在消息消费者方法上,会立即监听并消费消息队列中的消息,@RabitListener 注解的queues属性可以定制消息队列,@QueueBinding 注解包括有value type、 key 等属性

73.RabbitMQ提供的工作模式包括发布订阅模式 ,路由模式, Headers 模式,Work queues(工作队列模式)、Topics(通配符模式)、RPC

74.RabbitMQ是使用Erlang语言开发的开源消息队列系统,基于AMQP协议

75.RocketMQ 是Apache的顶级项目,具有高吞吐量、高可用等特点 

76.使用Security 整合Thymeleaf 实现页面的管理,Spring Boot2.1.3版本中添加thymeleaf-extras-springsecurity5依赖不需要手动指定版本号,sec:authorize="hasAuthority(‘ROLE vip’)"用于判断用户是否有ROLE_vip权限,sec:authentication=“name” 属性用于显示登录用户名name

77.关于自定义用户登录,loginPage(Sting loginPage)指定用户登录页面跳转路径,默认为GET请求的 /login,loginProcessingUrl(String loginProcessingUrl)指定登录表单提交的路径,默认为POST,请求的 /login,项目加入Security 后,可以不对 static 文件夹下的静态资源文件进行统一放行处理

78.关于使用JDBC身份认证方式创建用户/权限表以及初始化数据性,用户表中的用户名username必须唯一。创建用户表时,必须额外定义一个tinyint类型的字段。初始化用户表数据时,插入的用户密码必须是对应编码器编码后的密码

79.关于将Spring Boot 定制Redis缓存序列化机制,在定制序列化方式中,要定义一个ObjectMapper 用于进行数据转换设置。Spring Boot 1x 版本中,定制 RedisTemplate组件序列化配置后,就完成了基于API和注解方式Redis序列化的定制。使用自定义RedisTmplate序列化机制缓存存储实体类数据,实体类不用再实现序列化

80.将Spring Boot 定制Redis缓存序列化机制,在定制序列化方式中,要定义一个ObjectMapper 用于进行数据转换设置。 Spring Boot 1x 版本中,定制 RedisTemplate组件序列化配置后,就完成了基于API和注解方式Redis序列化的定制。使用自定义RedisTmplate序列化机制缓存存储实体类数据,实体类不用再实现序列化

81.springboot中Redis缓存注解相关属性,value 和cacheNames属性作用相同,用于指定缓存的名称空间。key 属性的作用就是指定缓存数据对应的唯一标识, 默认使用注解标记的方法参数值。sync 属性表示数据缓存过程中是否使用异步模式,默认值为false

你可能感兴趣的:(spring,boot,后端,java)