1. OpenFeign
导入feign的依赖,开启远程调用功能@EnableFeignClient(“接口所在包”);接口上使用@FeignClient(“注册的微服务名”)
在open fen中会将调用的数据转换为JSON,接收方接收后,将JSON转换为对象,此时调用方和被调用方的处理JSON的对象不一定都是同一个类,只要它们的字段类型吻合即可。
2. SpringBoot的事务
存在Batch操作的时候,才需要加上事务,单个操作无需添加事务控制。
一个事务标注的方法上,方法内存在这些操作:
- 批量更新一个表中字段
- 更新多张表中的操作
实际上不论是哪种类型,方法中所有对于数据库的写操作,都会被整体当做一个事务,在这个事务过程中,如果某个操作出现了异常,则整体都不会被提交。这就是对于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规则,解决跨域问题
package com.atguigu.gulimall.gulimallgateway.config;
@Configuration
public class GulimallCorsConfiguration {
@Bean
public CorsWebFilter corsWebFilter() {
// 这个是CorsConfigurationSource的一个实现类
// reactive包下的,因为我们使用的响应式编程
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
// 新建一个Cors的配置对象,在这个配置对象中指定跨域配置
CorsConfiguration corsConfiguration = new CorsConfiguration();
//1、配置跨域
corsConfiguration.addAllowedHeader("*"); //允许哪些头进行跨域
corsConfiguration.addAllowedMethod("*"); // 允许所有请求方式进行跨域
corsConfiguration.addAllowedOrigin("*"); // 允许任意请求来源 进行跨域
corsConfiguration.setAllowCredentials(true); // 允许携带cookie进行跨域
// /**表示所有路径,我们对所有路径都用corsConfiguration这个跨域配置
source.registerCorsConfiguration("/**", corsConfiguration);
return new CorsWebFilter(source);
}
}
5. 逻辑删除
通过mybatis-plus可以配置某个字段的逻辑删除,但是开启了全局逻辑删除的字段无法使用update更新。
https://www.yuque.com/mrlinxi/pxvr4g/bf3a76#cZrrd mybatis-plus逻辑删除文档
主要步骤:
- 在application.yml文件中加入逻辑删除的配置
- 实体字段上加@TableLogic注解(如果第一步配置了logic-delete-field(3.3.0版本生效),则该步骤可以省略)
注:@TableLogic注解,可以设定,value表示逻辑不删除时的值,delval表示逻辑删除时候的值,不指定会从配置文件获取,指定会优先使用指定的值。
# 配置mybatis-plus
mybatis-plus:
mapper-locations: classpath:/mapper/**/*.xml # 配置sql映射目录
global-config:
db-config:
id-type: auto # 配置主键自增
logic-delete-field: showStatus # 全局逻辑删除的实体字段名(since 3.3.0,配置后可以忽略不配置步骤2)
# 我们数据库里面未删除是1,已删除是0,所以需要换一下,在@TableLogic指定也可以
logic-delete-value: 0 # 逻辑已删除值(默认为 1)
logic-not-delete-value: 1 # 逻辑未删除值(默认为 0)