参考文档 Spring Cloud Gateway官方文档处理跨域 配置类处理跨域 import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.cors.CorsConfiguration; import org.springframework.web.cors.reactive.CorsWebFilter; import org.springframework.web.cors.reactive.UrlBasedCorsConfigurationSource; @Configuration public class CorsConfig { @Bean public CorsWebFilter corsWebFilter(){ CorsConfiguration configuration = new CorsConfiguration(); configur.... 有更新! spring cloud gateway跨域 程序人生
概念 ECMAScript是浏览器脚本语言的规范,Java script是规范的具体实现。 参考:1.1 ES6 教程 | 菜鸟教程 (runoob.com) 变量 let和var let 是在代码块内有效,var 是在全局范围内有效,下述代码打印时,会提示 a is not defined <script> { let a = 1; var b = 2; } console.log(a) console.log(b) </script> let声明的变量不能重复定义,var可以,下属代码运行提示 Identifier 'a' has already been declared <script> { let a = 1; let a = 1; var b = 2; var b = 3; } console.log(a) console.log(b) </script> var 存在变量提升,let不存在变量提升,下述代码,b打印结果为undefined,a打印提示 caught ReferenceError: Cannot acces.... 有更新! ES6学习笔记 程序人生
1、注解 1.1、内置注解 @Override 子类重写方法 @Deprecated 标识这个方法或者类已经被废弃或有更好的选择 @SuppressWarnings 抑制编译器告警 1.2、元注解 元注解是用来修饰注解的注解 @Target 指定注释的使用范围 @Retention 注释的生命周期,有SOURCE(编译时被抛弃),CLASS(class文件中存在,但是运行时被抛弃),RUNTIME(运行时依然存在) @Documented 标识生成javadoc时,该注解修饰的注解也会在javadock中显示 @Inherited 某个类使用了用@Inherited注解标识的注解,则他的子类也会继承这个注解 1.3、自定义注解 使用@interface定义注解 import java.lang.annotation.*; @Target(value = {ElementType.METHOD,ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @Documented @Inherited public.... 有更新! 注解和反射 程序人生
1、问题 这次调试代码遇到一个奇怪的问题,我使用dynamic datasource进行多数据源配置,在service中建立了两个方法大致内容如下,即需要在getDatabase0中调用getDatabase1方法,然后查询mySql1的数据,但是查询后返回的值一直是mySql0这个库的数据。 @DS("mySql0") public B_FertilizerSite getDatabase0(){ return getDatabase1(); } @DS("mySql1") public B_FertilizerSite getDatabase1(){ return b_fertilizerSiteMapper.selectByPrimaryKey(1); } 2、处理 针对这个问题,可以通过代码改动来解决,如下: @DS("mySql0") public B_FertilizerSite getDatabase0(){ return ((TestFertilizerSiteService)AopContext.currentProxy()).getDatabase1(); }.... 注解方法嵌套调用失效的问题 程序人生
今天使用JSONObject.toJavaObject()方法试图将一个JSONObject对象装换为指定class对象,该对象属性如下所示 private Integer ID; private String fertilizerSiteName; private String userName; private Boolean sendOk; 转换后发现ID字段一直为null,然后我们跟踪代码发现,fastjson通过获取set开头的方法,然后通过字符串截取来获取属性(见com.alibaba.fastjson.util.DeserializeBeanInfo的DeserializeBeanInfo computeSetters(Class<?> clazz, Type type)方法),因为正常的命名习惯都是set然后属性首字母大写,正常这么写是没有问题的,不过这里我们的ID都是大写,他这里默认截取后首字母小写ID,就变成了iD再来做映射的时候就找不到字段了,代码如下 if (methodName.startsWith("set")) { char c3 = met.... 有更新! JSONObject.toJavaObject对首字母大写的属性设置失败 程序人生
1、简介 AT 模式(参考链接 TBD)基于 支持本地 ACID 事务 的 关系型数据库 : TCC 模式,不依赖于底层数据资源的事务支持。 2、建立项目 TCC模式的maven依赖引入,项目配置和AT模式相同,可以参考seata+nacos实现AT模式分布式事务的第2节,完成代码到git上下载,TCC模式在tcc分支下,脚本在script目录下(和AT模式的数据库脚本一致,选择一个执行即可) https://gitee.com/WylLoveX/seata.git 3、使用 TM端依然使用@GlobalTransactional注解标识 RM端需要单独标识出来 @LocalTCC将资源注册到TC @TwoPhaseBusinessAction 将资源标时为二阶段提交的try阶段,这里需要在指定二阶段对应的Confirm和Cancel @BusinessActionContextParameter标时这个一个二阶段参数,后续可以在BusinessActionContext中获取 /** * @author Mr.Wen * @version 1.0 * @date 2021-10-2.... 有更新! seata+nacos实现TCC模式分布式事务 程序人生