image.png

1. OpenFeign

导入feign的依赖,开启远程调用功能@EnableFeignClient(“接口所在包”);接口上使用@FeignClient(“注册的微服务名”)
在open fen中会将调用的数据转换为JSON,接收方接收后,将JSON转换为对象,此时调用方和被调用方的处理JSON的对象不一定都是同一个类,只要它们的字段类型吻合即可。

2. SpringBoot的事务

存在Batch操作的时候,才需要加上事务,单个操作无需添加事务控制。
一个事务标注的方法上,方法内存在这些操作:

  1. 批量更新一个表中字段
  2. 更新多张表中的操作

实际上不论是哪种类型,方法中所有对于数据库的写操作,都会被整体当做一个事务,在这个事务过程中,如果某个操作出现了异常,则整体都不会被提交。这就是对于SpringBoot中的@Transactional的理解。
@EnableTransactionManagement和@Transactional的区别?
https://blog.csdn.net/abysscarry/article/details/80189232
https://blog.csdn.net/Driver_tu/article/details/99679145
https://www.cnblogs.com/leaveast/p/11765503.html

3. JSR303数据校验

https://www.yuque.com/mrlinxi/pxvr4g/so0qaf#zbSGA

4. 全局跨域处理

通过gateway配置CROS规则,解决跨域问题

  1. package com.atguigu.gulimall.gulimallgateway.config;
  2. @Configuration
  3. public class GulimallCorsConfiguration {
  4. @Bean
  5. public CorsWebFilter corsWebFilter() {
  6. // 这个是CorsConfigurationSource的一个实现类
  7. // reactive包下的,因为我们使用的响应式编程
  8. UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
  9. // 新建一个Cors的配置对象,在这个配置对象中指定跨域配置
  10. CorsConfiguration corsConfiguration = new CorsConfiguration();
  11. //1、配置跨域
  12. corsConfiguration.addAllowedHeader("*"); //允许哪些头进行跨域
  13. corsConfiguration.addAllowedMethod("*"); // 允许所有请求方式进行跨域
  14. corsConfiguration.addAllowedOrigin("*"); // 允许任意请求来源 进行跨域
  15. corsConfiguration.setAllowCredentials(true); // 允许携带cookie进行跨域
  16. // /**表示所有路径,我们对所有路径都用corsConfiguration这个跨域配置
  17. source.registerCorsConfiguration("/**", corsConfiguration);
  18. return new CorsWebFilter(source);
  19. }
  20. }

5. 逻辑删除

通过mybatis-plus可以配置某个字段的逻辑删除,但是开启了全局逻辑删除的字段无法使用update更新。
https://www.yuque.com/mrlinxi/pxvr4g/bf3a76#cZrrd mybatis-plus逻辑删除文档
主要步骤:

  1. 在application.yml文件中加入逻辑删除的配置
  2. 实体字段上加@TableLogic注解(如果第一步配置了logic-delete-field(3.3.0版本生效),则该步骤可以省略)

注:@TableLogic注解,可以设定image.png,value表示逻辑不删除时的值,delval表示逻辑删除时候的值,不指定会从配置文件获取,指定会优先使用指定的值。

  1. # 配置mybatis-plus
  2. mybatis-plus:
  3. mapper-locations: classpath:/mapper/**/*.xml # 配置sql映射目录
  4. global-config:
  5. db-config:
  6. id-type: auto # 配置主键自增
  7. logic-delete-field: showStatus # 全局逻辑删除的实体字段名(since 3.3.0,配置后可以忽略不配置步骤2)
  8. # 我们数据库里面未删除是1,已删除是0,所以需要换一下,在@TableLogic指定也可以
  9. logic-delete-value: 0 # 逻辑已删除值(默认为 1)
  10. logic-not-delete-value: 1 # 逻辑未删除值(默认为 0)