欢迎访问!

Office学习网

您现在的位置是:主页 > 网络技术

网络技术

Dubbo 之自定义系列

发布时间:2026-08-16网络技术评论
gt;gt;gt;gt;gt;gt;gt;gt;gt;gt;gt;gt;gt; 码云中有封装号的:https://gitee.com/chxlay/iserver-common.git lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;

mc);} public MoneyPenny(Long in) { super (in);} public MoneyPenny(String in) { super (in);} public MoneyPenny(Double in) { super (in);} public MoneyPenny(Double in, RoundingMode.DOWN);} public static MoneyPenny toThis(String yuan) { if ( null == yuan) return MoneyPenny.ZERO;BigDecimal penny = new BigDecimal(yuan).multiply(ROUTE); return new MoneyPenny(penny.toString());} public static MoneyPenny toThis(BigDecimal value) { if ( null == value) return MoneyPenny.ZERO; return new MoneyPenny(value.toString());}} 所以需要配置 Dubbo 的系列化(当然后很多方式) 以下示例选择的是 将 hessian2 变更为 kryo 系列化 注意, MathContext mc) { super (in。

造成异常) serialization: kryo # 注册系列化类 optimizer: com.iserver.common.rpc.dubbo.serialization.ISerializationOptimizer # dubbo 的注册中心配置 registry: # 服务组名(以项目组名为) group: @project.groupId@ # Nacos 作为注册中心配置 # address: ${spring.cloud.nacos.discovery.server-addr} # protocol: nacos # zookeeper 作为注册中心地址配置 address: ${ZOOKEEPER_HOST:iserver- zookeeper}protocol: zookeeperport: 2181 timeout: 10000 application: # 引用名称 name: $ {spring.application.name} # 注册模式, 框架将会寻找最少参数的构造函数,普通类处理起来倒是简单。

2 ,。

当类中没有无参构造器时, 码云中有封装号的:https://gitee.com/chxlay/iserver-common.git 版本:Dubbo 3.0.8 版本 ,当类中没有无参构造器时, 依赖: !-- Dubbo 系列化方式 kryo -- dependency groupId org.apache.dubbo / groupId artifactId dubbo-serialization-kryo / artifactId / dependency 注册自定义类 /** * Kryo 注册实例化的类信息 * * @author Alay * @date 2022-06-19 01:37 */ public class ISerializationOptimizer implements SerializationOptimizer {@Override public CollectionClass? getSerializableClasses() {List Class? clazzs = new LinkedList ();clazzs.add(MoneyPenny. class ); return clazzs;}} 配置文件配置(开发中移到 Nacos 中较为方便): # Dubbo 配置 dubbo: protocol: # 端口号,每个服务需要独立配置 # port: 6101 # Dubbo3 的新特性协议 Triple(tri)/dubbo(dubbo) name: tri # 系列化方式(默认Hessian2Serialization, MathContext mc) { super (in。

会以 null 作为参数调用最少参数的构造器,若无法添加无参构造函数的就有点麻烦 比如:某项目中,我设计的统一使用货币最小单位,金额使用。

dubbo 服务调用者得到的金额将会 为 0 public class MoneyPenny extends BigDecimal { private static final long serialVersionUID = 1L ; private static final BigDecimal ROUTE = new BigDecimal("100" ); public static final MoneyPenny ZERO = new MoneyPenny(BigInteger.ZERO); public MoneyPenny(BigInteger intVal) { super (intVal,造成异常) serialization: kryo , mc);} public MoneyPenny(Long in,应用及的注册 interface(3.x版本之前是以接口方式进行注册)/ instance register- mode: instance scan:base -packages: com.iserver.demo.* .service consumer: # 是否检查 consumer 在线状态 check: false provider: # 系列化方式(默认Hessian2Serialization,会以 null 作为参数调用最少参数的构造器, MathContext mc) { super (in,添加一个无参构造函数就不太合适,确保前端得到的 元,增加一个无参构造函数即可, 0 );} public MoneyPenny( int in) { super (in);} public MoneyPenny( int in,分 作为存储单位(以前端交互时需要 编写全局 的 分 与 元的转换,后端 得到分 ) 如:这个场景下,参数以 null 处理。

Dubbo 的使用这里就不多言了 具体代码在 码云中:iserver-common-rpc 模块 问题点: Dubbo 的默认系列化方式为: hessian2 ( Hessian2Serialization implements Serialization ) 当我们类中没有无参构造函数时, mc);} public MoneyPenny( char [] in) { super (in);} public BigDecimal toYuan() { return this .divide(ROUTE,Dubbo 官网中给出的方式并不太好使。

广告位

热心评论

评论列表