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

公司建设网站费用属于什么费用朋友圈广告投放平台

公司建设网站费用属于什么费用,朋友圈广告投放平台,给别人搭建网站,40平米小户型装修效果图前提介绍 Feign是SpringCloud中服务消费端的调用框架#xff0c;通常与ribbon#xff0c;hystrix等组合使用。由于遗留原因#xff0c;某些项目中#xff0c;整个系统并不是SpringCloud项目#xff0c;甚至不是Spring项目#xff0c;而使用者关注的重点仅仅是简化http调…前提介绍 Feign是SpringCloud中服务消费端的调用框架通常与ribbonhystrix等组合使用。由于遗留原因某些项目中整个系统并不是SpringCloud项目甚至不是Spring项目而使用者关注的重点仅仅是简化http调用代码的编写。*如果采用httpclient或者okhttp这样相对较重的框架对初学者来说编码量与学习曲线都会是一个挑战而使用spring中RestTemplate又没有配置化的解决方案由此想到是否可以脱离Spring cloud独立使用Feign。 内容简介 Feign使得 Java HTTP 客户端编写更方便。Feign 灵感来源于Retrofit、JAXRS-2.0和WebSocket。Feign最初是为了降低统一绑定Denominator到HTTP API的复杂度不区分是否支持Restful。Feign旨在通过最少的资源和代码来实现和HTTP API的连接。通过可定制的解码器和错误处理可以编写任意的HTTP API。 maven依赖 dependencygroupIdcom.netflix.feigngroupIdartifactIdfeign-coreartifactIdversion8.18.0versiondependencydependencygroupIdcom.netflix.feigngroupIdartifactIdfeign-jacksonartifactIdversion8.18.0versiondependencydependencygroupIdio.github.lukehutchgroupIdartifactIdfast-classpath-scannerartifactIdversion2.18.1versiondependencydependencygroupIdcom.netflix.feigngroupIdartifactIdfeign-jacksonartifactIdversion8.18.0versiondependency 复制代码定义配置类 RemoteService service Feign.builder().options(new Options(1000, 3500)).retryer(new Retryer.Default(5000, 5000, 3)).encoder(new JacksonEncoder()).decoder(new JacksonDecoder()).target(RemoteService.class, http://127.0.0.1:8085); 复制代码options方法指定连接超时时长及响应超时时长retryer方法指定重试策略target方法绑定接口与服务端地址。返回类型为绑定的接口类型。 自定义接口 随机定义一个远程调用的服务接口并且声明相关的接口参数和请求地址。 通过RequestLine指定HTTP协议及URL地址 public class User{String userName; }public interface RemoteService {User getOwner(User user);public User getOwner( User user,String requestToken,Long userId,String userName); } 复制代码服务提供者 import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody;public class UserController {public User list( User user) throws InterruptedException{System.out.println(user.getUsername());user.setId(100L);user.setUsername(user.getUsername().toUpperCase());return user;} } 复制代码调用 与调用本地方法相同的方式调用feign包装的接口直接获取远程服务提供的返回值。 String result service.getOwner(new User(scott)); 复制代码原生Feign的两个问题 原生Feign只能一次解析一个接口生成对应的请求代理对象如果一个包里有多个调用接口就要多次解析非常麻烦。Feign生成的调用代理只是一个普通对象该如何注册到Spring中以便于我们可以使用Autowired随时注入。 解决方案 针对多次解析的问题可以通过指定扫描包路径然后对包中的类依次解析。实现BeanFactoryPostProcessor接口扩展Spring容器功能。 定义一个注解类 import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target;public FeignApi {String serviceUrl(); } 复制代码生成Feign代理并注册到Spring实现类 import feign.Feign; import feign.Request; import feign.Retryer; import feign.jackson.JacksonDecoder; import feign.jackson.JacksonEncoder; import io.github.lukehutch.fastclasspathscanner.FastClasspathScanner; import io.github.lukehutch.fastclasspathscanner.scanner.ScanResult; import org.springframework.beans.factory.config.BeanFactoryPostProcessor; import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; import org.springframework.stereotype.Component; import java.util.List;public class FeignClientRegister implements BeanFactoryPostProcessor{private String scanPathcom.xxx.api;public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) {List classes scan(scanPath);if(classesnull){return ;}System.out.println(classes);Feign.Builder builder getFeignBuilder();if(classes.size()0){for (String claz : classes) {Class targetClass null;try {targetClass Class.forName(claz);String urltargetClass.getAnnotation(FeignApi.class).serviceUrl();if(url.indexOf(http://)!0){urlhttp://url;}Object target builder.target(targetClass, url);beanFactory.registerSingleton(targetClass.getName(), target);} catch (Exception e) {throw new RuntimeException(e.getMessage());}}}}public Feign.Builder getFeignBuilder(){Feign.Builder builder Feign.builder().encoder(new JacksonEncoder()).decoder(new JacksonDecoder()).options(new Request.Options(1000, 3500)).retryer(new Retryer.Default(5000, 5000, 3));return builder;}public List scan(String path){ScanResult result new FastClasspathScanner(path).matchClassesWithAnnotation(FeignApi.class, (Class aClass) - {}).scan();if(result!null){return result.getNamesOfAllInterfaceClasses();}return null;} } 复制代码调用接口编写示例 import com.xiaokong.core.base.Result; import com.xiaokong.domain.DO.DeptRoom; import feign.Headers; import feign.Param; import feign.RequestLine; import com.xiaokong.register.FeignApi;import java.util.List;public interface RoomApi {Result selectById( String id);Result selectList(); } 复制代码接口使用示例 public class ServiceImpl{private RoomApi roomApi;public void demo(){Result result roomApi.selectById(1);System.out.println(result);} } 复制代码注意事项 如果接口返回的是一个复杂的嵌套对象那么一定要明确的指定泛型因为Feign在解析复杂对象的时候需要通过反射获取接口返回对象内部的泛型类型才能正确使用Jackson解析。如果不明确的指明类型Jackson会将json对象转换成一个LinkedHashMap类型。如果你使用的是的Spring又需要通过http调用别人的接口都可以使用这个工具来简化调用与解析的操作。 分享资源 获取以上资源请访问开源项目 点击跳转
http://www.w-s-a.com/news/964486/

相关文章:

  • 广西柳州网站制作公司郴州网红打卡景点
  • 做网站要固定ip拍摄公司宣传片制作
  • 专业微网站电话号码做软件难吗
  • 邢台网站制作哪家强上海做网站设计
  • 大连网站建设外贸wordpress添加文章属性
  • 商城网站建设合同范本网上哪里可以免费学编程
  • 服务器公司网站博客wordpress怎么编辑
  • 网站建设网络推广柯西乡塘网站建设
  • 企业做网站需要多少钱企业资质查询系统官网
  • 网站建设需要知识百度统计数据
  • 自已如何做网站建设通网站会员共享密码
  • 做网站学习什么wordpress 文件夹
  • 前端移动网站开发wordpress图文混排
  • 企业网站建站那种好商城类网站怎么优化
  • 手机微网站怎么制作的网上找设计师
  • 网站建设包括哪些方面学校网站 建设
  • 贵阳网站优化公司建筑设计师用什么软件
  • 网站建设的小说静态网页模板免费网站
  • 芜湖建设厅官方网站wordpress自动设置缩略图
  • 推荐网站网页湛江网站建设哪家优惠多
  • 传奇网站免费空间网店装修店面
  • 网站改版 重新收录湖南建筑信息一体化管理平台
  • 可以做直播卖产品的网站陕西省建设银行网站
  • 搭建网站的英语seo优化专员招聘
  • 做网站深紫色搭配什么颜色网站的在线支付怎么做
  • 中国最大网站建设公司长沙专业做网站公司哪家好
  • 金峰辉网站建设菏泽财富中心网站建设
  • 怎么做网站站长视频企业网站开发意义
  • 网站创建多少钱商标自助查询系统官网
  • 免费做App和网站的平台广州做网站推广的公司