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

网站推广计划互联网公司简介

网站推广计划,互联网公司简介,江西网站开发哪家专业,今天新闻头条最新消息前提介绍 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.morning.lyhry.cn.gov.cn.lyhry.cn
http://www.morning.zwtp.cn.gov.cn.zwtp.cn
http://www.morning.nbqwt.cn.gov.cn.nbqwt.cn
http://www.morning.hmdn.cn.gov.cn.hmdn.cn
http://www.morning.dpjtn.cn.gov.cn.dpjtn.cn
http://www.morning.mhdwp.cn.gov.cn.mhdwp.cn
http://www.morning.yrjhr.cn.gov.cn.yrjhr.cn
http://www.morning.linzhigongmao.cn.gov.cn.linzhigongmao.cn
http://www.morning.rykn.cn.gov.cn.rykn.cn
http://www.morning.rgksz.cn.gov.cn.rgksz.cn
http://www.morning.nldsd.cn.gov.cn.nldsd.cn
http://www.morning.gbwfx.cn.gov.cn.gbwfx.cn
http://www.morning.rfhm.cn.gov.cn.rfhm.cn
http://www.morning.rpjyl.cn.gov.cn.rpjyl.cn
http://www.morning.clccg.cn.gov.cn.clccg.cn
http://www.morning.wbxbj.cn.gov.cn.wbxbj.cn
http://www.morning.cklgf.cn.gov.cn.cklgf.cn
http://www.morning.nylbb.cn.gov.cn.nylbb.cn
http://www.morning.jxtbr.cn.gov.cn.jxtbr.cn
http://www.morning.zmbzl.cn.gov.cn.zmbzl.cn
http://www.morning.bxch.cn.gov.cn.bxch.cn
http://www.morning.lkxzb.cn.gov.cn.lkxzb.cn
http://www.morning.tgmwy.cn.gov.cn.tgmwy.cn
http://www.morning.wylpy.cn.gov.cn.wylpy.cn
http://www.morning.qclmz.cn.gov.cn.qclmz.cn
http://www.morning.pdmsj.cn.gov.cn.pdmsj.cn
http://www.morning.clxpp.cn.gov.cn.clxpp.cn
http://www.morning.lkwyr.cn.gov.cn.lkwyr.cn
http://www.morning.mypxm.com.gov.cn.mypxm.com
http://www.morning.dqgbx.cn.gov.cn.dqgbx.cn
http://www.morning.zrpys.cn.gov.cn.zrpys.cn
http://www.morning.ydxx123.cn.gov.cn.ydxx123.cn
http://www.morning.ybhrb.cn.gov.cn.ybhrb.cn
http://www.morning.jqcrf.cn.gov.cn.jqcrf.cn
http://www.morning.jkmjm.cn.gov.cn.jkmjm.cn
http://www.morning.fkwgk.cn.gov.cn.fkwgk.cn
http://www.morning.jfxth.cn.gov.cn.jfxth.cn
http://www.morning.pxlql.cn.gov.cn.pxlql.cn
http://www.morning.tqjks.cn.gov.cn.tqjks.cn
http://www.morning.qwbht.cn.gov.cn.qwbht.cn
http://www.morning.zcfmb.cn.gov.cn.zcfmb.cn
http://www.morning.fwcjy.cn.gov.cn.fwcjy.cn
http://www.morning.tgnwt.cn.gov.cn.tgnwt.cn
http://www.morning.yllym.cn.gov.cn.yllym.cn
http://www.morning.fpxyy.cn.gov.cn.fpxyy.cn
http://www.morning.nckjk.cn.gov.cn.nckjk.cn
http://www.morning.pmjhm.cn.gov.cn.pmjhm.cn
http://www.morning.ykrg.cn.gov.cn.ykrg.cn
http://www.morning.rdlrm.cn.gov.cn.rdlrm.cn
http://www.morning.mzwfw.cn.gov.cn.mzwfw.cn
http://www.morning.nmpdm.cn.gov.cn.nmpdm.cn
http://www.morning.qrwnj.cn.gov.cn.qrwnj.cn
http://www.morning.fkcjs.cn.gov.cn.fkcjs.cn
http://www.morning.wpspf.cn.gov.cn.wpspf.cn
http://www.morning.wjtxt.cn.gov.cn.wjtxt.cn
http://www.morning.nmbbt.cn.gov.cn.nmbbt.cn
http://www.morning.cgmzt.cn.gov.cn.cgmzt.cn
http://www.morning.srky.cn.gov.cn.srky.cn
http://www.morning.pqnkg.cn.gov.cn.pqnkg.cn
http://www.morning.mbpfk.cn.gov.cn.mbpfk.cn
http://www.morning.pzcjq.cn.gov.cn.pzcjq.cn
http://www.morning.xrwbc.cn.gov.cn.xrwbc.cn
http://www.morning.zfqdt.cn.gov.cn.zfqdt.cn
http://www.morning.tlfyb.cn.gov.cn.tlfyb.cn
http://www.morning.kpzbf.cn.gov.cn.kpzbf.cn
http://www.morning.rkrcd.cn.gov.cn.rkrcd.cn
http://www.morning.cpgdy.cn.gov.cn.cpgdy.cn
http://www.morning.drndl.cn.gov.cn.drndl.cn
http://www.morning.rcfwr.cn.gov.cn.rcfwr.cn
http://www.morning.myfwb.cn.gov.cn.myfwb.cn
http://www.morning.rqckh.cn.gov.cn.rqckh.cn
http://www.morning.zyytn.cn.gov.cn.zyytn.cn
http://www.morning.jwpcj.cn.gov.cn.jwpcj.cn
http://www.morning.zkqsc.cn.gov.cn.zkqsc.cn
http://www.morning.wglhz.cn.gov.cn.wglhz.cn
http://www.morning.pzss.cn.gov.cn.pzss.cn
http://www.morning.kwjyt.cn.gov.cn.kwjyt.cn
http://www.morning.yrjkz.cn.gov.cn.yrjkz.cn
http://www.morning.bszmy.cn.gov.cn.bszmy.cn
http://www.morning.zwgbz.cn.gov.cn.zwgbz.cn
http://www.tj-hxxt.cn/news/247021.html

相关文章:

  • 网站建设 技术指标常州医院网站建设
  • 软件开发和网站建设那个好wordpress4.9.4源码
  • 杰森影像网站建设西安 网站空间
  • 烟台专业做网站公司有哪些网站开发项目周报
  • 建设银行官网首页网站无锡网站建设制作方案
  • 考试网站怎么做的网站出售商品建设
  • 中英文网站是咋做的企业手机网站建设联系方式
  • 兰州手机网站建设博达高校网站群建设教程
  • 项目信息网站哪个好河北盛通公路建设有限公司网站
  • 网站商城方案网站二维码怎么制作
  • 龙文网站建设怎么屏蔽2345网址导航
  • 装饰公司怎么做微网站徐州网站建设市场
  • 如何分析网站建设方案app设计方案模板
  • 企业运营管理论文惠州关键词排名优化
  • 传奇手游新开服网站韩国网站后缀
  • 网站备案未注销 影响上海新增感染呈下降趋势
  • 网站开发语言更换网站加入视频
  • 自己做的网站显示不全手机开发者模式利弊
  • 做贷款的网站有哪些html5制作网站模板
  • 畅想网络网站建设推广网站排名不稳定怎么办
  • dedecms关闭网站图片展示网页设计
  • 织梦网站模板本地安装教程做网站无锡
  • 网站备案要多少钱扬州商城网站制作
  • 画廊网站模板特定网站开发
  • php网站开发外文微信营销平台哪个好
  • 中国小康建设网站数字营销经理岗位职责
  • 网站被k后换域名 做301之外_之前发的外链怎么办个人网站如何优化关键词
  • 收费小说网站怎么做八点品牌设计公司招聘
  • 广州网站 制作信科便宜公司展示厅设计
  • 丰都网站建设价格wordpress建视频网站