当前位置: 首页 > news >正文

网站建设需要注意什么问题如何查公司注册信息及法人

网站建设需要注意什么问题,如何查公司注册信息及法人,有没有做婚车的网站,网络营销宏观环境有哪些#x1f4bb;目录 前言一、简绍二、代码实现1、搭建服务模块1.1、建立父包1.2、建立两个子包#xff08;service-order、service-product#xff09;1.3、添加util 工具类 2、添加maven依赖和yml配置文件2.1、springcloud-test父包配置2.2、服务模块配置2.2.1、service-orde… 目录 前言一、简绍二、代码实现1、搭建服务模块1.1、建立父包1.2、建立两个子包service-order、service-product1.3、添加util 工具类 2、添加maven依赖和yml配置文件2.1、springcloud-test父包配置2.2、服务模块配置2.2.1、service-order订单模块配置2.2.1、service-product产品模块配置2.2.1、service-util工具模块配置 3、添加service-util工具模块代码3.1、添加实体3.2、添加统一返回类 4、添加service-order功能代码4.1、启动类4.2、添加配置类4.3、添加controller4.4、添加feign进行远程调用4.5、添加ProductFeignClientImpl用于熔断时降级 5、添加service-product服务功能代码5.1、启动类5.2、添加controller5.3、添加service 三、功能测试1、启动服务2、接口测试 前言 本套mode使用的是Alibaba的2021.0.1版springboot的2.6.3实现适用于springboot 2.7~2.4使用到的组件包括OpenFeign实现远程调用、loadbalancer负载均衡、hystrix熔断降级、nacos注册中心 nacos的安装和基本配置使用可以查看我这篇博客或者关注下面的专栏后续会持续更新其他的Spring Cloud 组件介绍以及使用 Nacos下载与安装配置2.2.3版本示例 Spring Cloud Alibaba专栏 一、简绍 openFeign是要声明式的web服务客户端或叫做声明式REST客户端它让编写web服务客户端变得简单。 能够干什么 可以让我们实现调用别的服务模块像调用本地模块接口一样方便并且在配合上loadbalancer可以实现负载均衡的效果实现集群化部署避免请求全部到一个服务并且通过hystrix实现一个服务降级到效果可以当请求过多无法按时返回时实现一个服务降级到效果以及通过nacos实现一个服务注册的效果。 实现原理 OpenFeign在进行远程调用时主要是采用一种动态代理的方式实现项目启动时其实就会把被 FeignClient修饰的接口生成一个代理对象全部注入到spring容器中然后在被调用时在内部会通过这个代理对象把接口调用转化为一个远程调用到 的Request并发送给目标服务。 具体代理实现原理可以看下面这个博主讲解相对比较详细 OpenFeign基本介绍和原理了解 二、代码实现 1、搭建服务模块 1.1、建立父包 - 首先建立一个父包用于指定统一版本避免出现版本⭐记得使用maven方式建立然后去自己加依赖指定版本不同版本之间差距很大 1.2、建立两个子包service-order、service-product 记得依赖父包便于指定版本 service-order订单模块 service-product产品模块 1.3、添加util 工具类 用于存放统一的model以及统一返回工具类一些其他的工具类 2、添加maven依赖和yml配置文件 spring的 Spring Boot 3.0Spring Boot 2.7~2.4和 2.4 是变化比较大的版本我的这个架构依赖适用于Spring Boot 2.7-2.4之间的版本的因为SpringCloudFeign在Hoxton.M2RELEASED版本之后抛弃了Ribbon使用了spring-cloud-loadbalancer变动会比较大也就是Spring Boot 2.4以后都使用的spring-cloud-loadbalancer做的远程调用 因为ribbon以及部分组件目前已经没有更新了所以不建议使用2.4之前的版本而3.0的最新的也不太建议使用因为版本过新相对bug比较多选择中间的就好 具体需要查看自己spring对应的组件版本可以查看 springcloud组件版本对应说明 2.1、springcloud-test父包配置 maven ?xml version1.0 encodingUTF-8? project xmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersiongroupIdorg.example/groupIdartifactIdspringcloud-test/artifactIdpackagingpom/packagingversion1.0-SNAPSHOT/versionmodulesmoduleservice-order/modulemoduleservice-product/modulemoduleservice-util/module/modulesparentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion2.6.3/versionrelativePath/ !-- lookup parent from repository --/parentpropertiesjava.version1.8/java.versionproject.build.sourceEncodingUTF-8/project.build.sourceEncodingcloud.version2021.0.1/cloud.versionalibaba.version2021.0.1.0/alibaba.versionmysql.version8.0.30/mysql.version/propertiesdependencyManagementdependenciesdependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-dependencies/artifactIdversion${cloud.version}/versiontypepom/typescopeimport/scope/dependencydependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-alibaba-dependencies/artifactIdversion${alibaba.version}/versiontypepom/typescopeimport/scope/dependency/dependencies/dependencyManagement /project2.2、服务模块配置 2.2.1、service-order订单模块配置 因为为了测试方便我没有使用到数据库所以就没加sql相关的依赖和配置如果自己需要使用到自行添加就行 maven 2.4之前openfeign是内置了Ribbon是可以不用加loadbalancer 依赖的但之后的版本弃用了所以需要添加 ?xml version1.0 encodingUTF-8? project xmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdparentartifactIdspringcloud-test/artifactIdgroupIdorg.example/groupIdversion1.0-SNAPSHOT/version/parentmodelVersion4.0.0/modelVersionartifactIdservice-order/artifactIdpropertiesmaven.compiler.source8/maven.compiler.sourcemaven.compiler.target8/maven.compiler.target/propertiesdependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactIdscopeprovided/scope/dependencydependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactId/dependency !-- 远程调用--dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-openfeign/artifactIdscopeprovided/scope/dependency!-- nacos 服务注册 --dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-discovery/artifactId/dependency !-- 引用util工具包--dependencygroupIdorg.example/groupIdartifactIdservice-util/artifactIdversion1.0-SNAPSHOT/version/dependency !-- 熔断降级--dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-netflix-hystrix/artifactIdversion2.2.9.RELEASE/version/dependency!-- 负载均衡--dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-loadbalancer/artifactId/dependency/dependencies /projectyml 配置注册nacos和feign开启负载均衡和熔断的相关配置 server:port: 8201spring:application:name: service-orderprofiles:active: dev# nacos配置cloud:nacos:discovery:server-addr: localhost:8848 # 开启负载均衡默认是不开启的 feign:circuitbreaker:enabled: true# 熔断配置 hystrix:command:default:execution.isolation.thread.timeoutInMilliseconds: 3000 # 设置Hystrix超时时间毫秒ProductFeignClient#getProducts:execution.isolation.thread.timeoutInMilliseconds: 1000 # 为特定的Feign方法设置超时时间2.2.1、service-product产品模块配置 -mavne的依赖和xml和前面的order模块一样就是端口和name不同 server:port: 8203spring:application:name: service-product# 注入到nacoscloud:nacos:discovery:server-addr: localhost:88482.2.1、service-util工具模块配置 maven 加个lombok就行没有yml ?xml version1.0 encodingUTF-8? project xmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdparentartifactIdspringcloud-test/artifactIdgroupIdorg.example/groupIdversion1.0-SNAPSHOT/version/parentmodelVersion4.0.0/modelVersionartifactIdservice-util/artifactIdpropertiesmaven.compiler.source8/maven.compiler.sourcemaven.compiler.target8/maven.compiler.target/propertiesdependenciesdependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdversion1.18.16/version/dependency/dependencies /project3、添加service-util工具模块代码 3.1、添加实体 OrderInfo Data public class OrderInfo {private Long id;/**订单号*/private String orderNo;/**产品列表*/private ListProductInfo productInfoList;/**收货人姓名*/private String receiverName; }ProductInfo Data AllArgsConstructor NoArgsConstructor public class ProductInfo {private Long id;/**销量*/private Integer sale;/**价格*/private Integer price;/**名称*/private String name;/**类型*/private Integer type;/**端口*/private Integer port; }3.2、添加统一返回类 Result Data public class ResultT {//状态码private Integer code;//信息private String message;//数据private T data;private Result(){}//设置数据,返回对象的方法public static T ResultT build(T data, ResultCodeEnum resultCodeEnum) {//创建Result对象设置值返回对象ResultT result new Result();//判断返回结果中是否需要数据if (data ! null) {//设置数据到result对象result.setData(data);}//设置其他值result.setCode(resultCodeEnum.getCode());result.setMessage(resultCodeEnum.getMessage());//返回设置值之后的对象return result;}//成功的方法public static T ResultT ok(T data) {return build(data, ResultCodeEnum.SUCCESS);}//成功的方法public static T ResultT ok() {return build(null, ResultCodeEnum.SUCCESS);}//失败的方法public static T ResultT fail(T data) {return build(data, ResultCodeEnum.FAIL);} } ResultCodeEnum Getter public enum ResultCodeEnum {SUCCESS(200,成功),FAIL(201, 失败),;private Integer code;private String message;ResultCodeEnum(Integer code, String message) {this.code code;this.message message;} }4、添加service-order功能代码 4.1、启动类 添加feign和nacos注解 SpringBootApplication EnableDiscoveryClient //启动nacos注解 EnableFeignClients //开启feign的客户端 public class ServiceOrderApplication {public static void main(String[] args) {SpringApplication.run(ServiceOrderApplication.class,args);}} 4.2、添加配置类 添加LoadBalancedConfig 负载均衡 用于配置负载均衡负载均衡的策略这里写了两个也可以使用权重或者自定义策略还有远程调用时的重试策略相关配置Default()方法可以传参数自行配置 Configuration public class LoadBalancedConfig {/*** 配置负载均衡策略* param environment* param loadBalancerClientFactory* return ReactorLoadBalancerServiceInstance*/BeanReactorLoadBalancerServiceInstance randomLoadBalancer(Environment environment,LoadBalancerClientFactory loadBalancerClientFactory) {String name environment.getProperty(LoadBalancerClientFactory.PROPERTY_NAME); // 轮询负载均衡RoundRobinLoadBalancer roundRobinLoadBalancer new RoundRobinLoadBalancer(loadBalancerClientFactory.getLazyProvider(name, ServiceInstanceListSupplier.class),name); // 随机 // RandomLoadBalancer randomLoadBalancer new RandomLoadBalancer(loadBalancerClientFactory // .getLazyProvider(name, ServiceInstanceListSupplier.class), // name);return roundRobinLoadBalancer;}/*** 请求失败时默认重试策略(默认重试5次* Param * param null* return*/Beanpublic Retryer feignRetryer(){//每次重试之间等待 500 毫秒。//最大等待时间为 1 毫秒。// 最多尝试 3 次。return new Retryer.Default(500,1,3);} }4.3、添加controller 添加了两个接口一个是用于测试当前模块是否可以正常被调用接口的一个是测试远程调用是否会有问题并且也没有写service层直接进行调用feign进行远程调用 RestController RequestMapping(/admin/acl/index) public class index {Resourceprivate ProductFeignClient productFeignClient;/*** 测试订单服务是否有问题* author yingfeng* return * return Result*/PostMapping(/login)public Result login(){HashMapString, String map new HashMap(16);map.put(token,token-admin);System.out.println();return Result.ok(map);}/*** 测试远程调用接口的接口* version 1.0*/GetMapping(/getorderinfo/{type})public Result getrderinfo(PathVariable Integer type){OrderInfo orderInfo new OrderInfo();//因为返回的是list所以如果远程调用超时或者报错时进入熔断所以会返回一个空集合ListProductInfo productInfoList productFeignClient.getProductInfoList(type);if(CollectionUtils.isEmpty(productInfoList)){return Result.ok(当前人数过多稍后重试);}orderInfo.setOrderNo(dd131312);orderInfo.setId(1234l);orderInfo.setProductInfoList(productInfoList);orderInfo.setReceiverName(张三);return Result.ok(orderInfo);} }4.4、添加feign进行远程调用 FeignClient :启用远程调用启动类需要有EnableFeignClients才会生效 name/value指定注册到注册中心的服务的名称如果项目使用了负载均衡name属性会作为微服务的名称用于服务发现url: url一般用于调试可以手动指定FeignClient调用的地址fallback: 定义容错的处理类当调用远程接口失败或超时时会调用对应接口的容错逻辑fallback指定的类必须实现FeignClient标记的接口也就是发生熔断时会执行该类 GetMapping地址需要记得写全方法名称要和被调用的接口一致 FeignClient(value service-product,fallback ProductFeignClientImpl.class) LoadBalancerClient(name service-product,configuration LoadBalancedConfig.class) public interface ProductFeignClient {GetMapping(/admin/Product/innet/getProductInfoList/{type})public ListProductInfo getProductInfoList(PathVariable Integer type); }⭐value 指定了nacos的服务名 4.5、添加ProductFeignClientImpl用于熔断时降级 Slf4j Service public class ProductFeignClientImpl implements ProductFeignClient {Overridepublic ListProductInfo getProductInfoList(Integer type) {log.info(请求接口失败进入熔断);ListProductInfo productInfoList new ArrayList();return productInfoList;} }5、添加service-product服务功能代码 5.1、启动类 和上面的一样占位置就不出现放上来了 5.2、添加controller 用于给order进行远程调用接口因为是内部调用便于取出就直接返回对应的参数不需要返回统一result处理类 RestController RequestMapping(/admin/Product) public class ProductInfoController {Resourceprivate ProductInfoService productInfoService;GetMapping(/innet/getProductInfoList/{type})public ListProductInfo getProductInfoList(PathVariable Integer type){ListProductInfo productInfoList productInfoService.getProductInfoList(type);System.out.println(查询产品详情productInfoList);//如果传入的类型未查询到自定义返回一个运行时异常if (CollectionUtils.isEmpty(productInfoList)){throw new RuntimeException();}return productInfoList;} }5.3、添加service 接口 public interface ProductInfoService {ListProductInfo getProductInfoList(Integer type); }实现类 因为为了测试方便就没添加数据库调用代码了这里获取端口是为了测试查看负载均衡方便 Service public class ProductInfoServiceImpl implements ProductInfoService {// 获取当前服务的端口Value(${server.port})private Integer port;Overridepublic ListProductInfo getProductInfoList(Integer type) {ProductInfo productInfo3 new ProductInfo(3l,800,20,哈密瓜1,1,port);ProductInfo productInfo1 new ProductInfo(1l,50,8,苹果1,1,port);ProductInfo productInfo2 new ProductInfo(2l,200,13,牛肉1,2,port);ProductInfo productInfo4 new ProductInfo(4l,50,9,青菜1,2,port);/* 实际项目中会从数据库查出数据 */ListProductInfo productInfoList Arrays.asList(productInfo1,productInfo2,productInfo3,productInfo4);// 根据传入的类型返回指定类型ListProductInfo result productInfoList.stream().filter(productInfo - productInfo.getType() type).collect(Collectors.toList());return result;} }三、功能测试 1、启动服务 service-order启动一个、service-product启动两个 设置访问可以并向启动 2、接口测试 先测试login接口返回成功代表order没问题 测试getorderinfo接口 第一次测试 第二次测试因为采用的是轮询的策略所以会依次轮询调用该服务名称的不同服务 当传的type类型是3时service-product没有这个类型会返回自定义的异常然后order就会进入熔断降级的代码 然后返回熔断的数据 如果请求超时也会进入熔断 在getProductInfoList方法上打上断点让不能返回实现请求超时 因为设置的是三秒未返回所以会在三秒后进入熔断
http://www.hkea.cn/news/14531207/

相关文章:

  • 网站首页布局有哪些设计图案
  • 微网站免费平台wordpress-move
  • 学院网站建设工作总结江门市网站建设
  • wordpress个人博客seo兼职平台
  • 网站设计公司推荐奇点网络定制软件开发公司有哪些
  • 上海品质网站建设做商城网站哪个好
  • 宁波网站建设建站怎么做专业企业网站建设多少钱
  • 母婴电子商务网站建设wordpress 查询条件
  • 长沙建站网站HTML和PHP怎么做网站
  • 自由贸易试验区网站建设方案营销单页网站制作
  • 入口网站推广使用wordpress编辑
  • 网站建设平台合同网站建设找实体还是淘宝
  • 做一个网站首页多少钱家电设计网站
  • 基层建设论文查询官方网站Wordpress 收录提交
  • 要学做网站网站建设的含义
  • 保定免费网站制作wordpress后台添加导航
  • 比较好的公司网站企业做增资 网站平台
  • 网站被惩罚之后怎么做单页面的网站模板
  • 网站建设行业解决方案邯郸网站建设
  • 四川建设厅官方网站查询最新新闻热点事件国际
  • 欧美做暖网站90设计素材网官网
  • 深圳做微信网站制作注册域名的服务商平台
  • 网站开发与设计公司大数据营销的特征有哪些
  • 爱空间网站模板关于网站建设实验报告
  • 活泼的网站网站设计优缺点分析
  • 网站系统设计方案个人建网站首选什么域名好
  • 企业微网站哪家好在线模板制作
  • 做网站ps能用美图秀秀么什么叫电商怎么做电商
  • 新城镇建设官方网站平面设计师灵感网站
  • 网站开发怎么用自己的电脑开发区二手房房价最新信息