javaruntime,springrain java_springrain

 2023-09-23 阅读 28 评论 0

摘要:微服务6.0.0 项目入口是springrain-system-web,基于Istio实现微服务,正在整理文档.前后分离javaruntime。6.0.0 基于VUE前后端分离,使用JWT认证.前端项目是springrain-vue实现了什么?不增加学习成本,像单体一样开发分布式微服务.不修改业务代码,可以实现单体,分层,微服务多种部

微服务

6.0.0 项目入口是springrain-system-web,基于Istio实现微服务,正在整理文档.

前后分离

javaruntime。6.0.0 基于VUE前后端分离,使用JWT认证.前端项目是springrain-vue

实现了什么?

不增加学习成本,像单体一样开发分布式微服务.

不修改业务代码,可以实现单体,分层,微服务多种部署模式切换.

java string。集成seata分布式事务实现.

实现思路

启动加载springbean时,先检查本地是否有实现,如果没有就启动GRPC远程调用.开发人员无感知.

基于seata分布式事务实现.支持有注解和无注解(开发人员无感知,理论上有不同步风险,个人感觉做好日志,风险不大)混合使用.

train。基于K8S的Service实现服务注册和发现,ConfigMap实现配置中心.开发人员无感知.

基于Istio实现微服务的发现,监控,熔断,限流.开发人员无感知.

限制

接口和实现的命名强制规范.

java springmvc,一个RPC接口只能有一个实现.

分布式事务,一定要避免A服务update表t,RPC调用B服务,B服务也update表t.这样A等待B结果,B等待A释放锁,造成死锁.

分布式无注解比较方便,理论上有不同步风险,个人感觉做好日志,风险不大

Service层不可以使用Servlet API,例如 HttpRequest

java spring框架 入门,体验单体到分层切换

修改springrain-system-web依赖springrain-system-service,不再依赖springrain-system-serviceimpl.

springrain-system-serviceimpl添加springrain-grpc-server依赖,启用org.springrain.SystemServiceImplApplication的@SpringBootApplication注解

seata-server的conf目录下file.conf,修改vgroup_mapping.my_test_tx_group = "default" 为 vgroup_mapping.seata_tx_group = "default",启动seata-server服务.

springmvc教程。启动springrain-system-serviceimpl

启动springrain-system-web

文档

代码生成器

java web start。sql脚本

springrain是spring/springboot的封装,springboot开发范例.

springrain是一个Maven项目,包含spring core,spring jdbc,spring mvc.

springrain自带代码生成器,能够生成对表的增删改查的逻辑代码,以及前台页面样式和js文件

java maven、项目只依赖spring,没有hibernate,struts,ibatis.

使用jwt认证.

数据库调优可以使用druid输出慢sql,比分析xml中的语句更直观,springrain所有的sql语句都使用Finder封装管理,只要查看Finder的引用即可.

案例

//就极简而言,一个数据库只需要一个Service,就可以管理这个数据库的任意一张表

//@Test 查询基本类型

public void testObject() throws Exception{

// Finder finder=new Finder("select id from t_user where 1=1 ");

Finder finder=Finder.getSelectFinder(User.class,"id").append(" WHERE 1=1 ");

finder.append("and id=:userId ").setParam("userId", "admin");

String id = baseDemoService.queryForObject(finder, String.class);

System.out.println(id);

}

//@Test 查询一个对象

public void testObjectUser() throws Exception{

//Finder finder=new Finder("select * from t_user where id=:userId order by id");

Finder finder=Finder.getSelectFinder(User.class).append(" WHERE id=:userId order by id desc ");

finder.setParam("userId", "admin");

User u = baseDemoService.queryForObject(finder, User.class);

System.out.println(u.getName());

}

//@Test 查询分页

public void testMsSql() throws Exception{

//Finder finder=new Finder("select * from t_user order by id");

Finder finder=Finder.getSelectFinder(User.class).append(" order by id desc ");

Listlist = baseDemoService.queryForList(finder, User.class, new Page(2));

System.out.println(list.size());

for(User s:list){

System.out.println(s.getName());

}

}

//@Test 调用数据库存储过程

public void testProc() throws Exception{

Finder finder=new Finder();

finder.setParam("unitId", 0);

finder.setProcName("proc_up");

Map queryObjectByProc = (Map) baseDemoService.queryObjectByProc(finder);

System.out.println(queryObjectByProc.get("#update-count-10"));

}

//@Test 调用数据库函数

public void testFunction() throws Exception{

Finder finder=new Finder();

finder.setFunName("fun_userId");

finder.setParam("userId", "admin");

String userName= baseDemoService.queryForObjectByByFunction(finder,String.class);

System.out.println(userName);

}

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/5/89728.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息