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

网站让百度收录应该怎么做屏蔽 wordpress 插件

网站让百度收录应该怎么做,屏蔽 wordpress 插件,wordpress怎么做激活验证,网站开发为什么要写接口问题描述 项目上开发了OpenFeign的自定义解码器#xff0c;用来统一处理返回结果。 开发完后测试已经生效了#xff0c;过两天后#xff0c;这块代码没有变动的情况下#xff0c;发现请求结果突然又不走自定义的解码器了。 代码如下 解码器 BaseResponseFeignDecoder …问题描述 项目上开发了OpenFeign的自定义解码器用来统一处理返回结果。 开发完后测试已经生效了过两天后这块代码没有变动的情况下发现请求结果突然又不走自定义的解码器了。 代码如下 解码器 BaseResponseFeignDecoder Slf4j public class BaseResponseFeignDecoder implements Decoder {static ObjectMapper objectMapper new ObjectMapper();static {objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);}Overridepublic Object decode(Response response, Type type) throws IOException, FeignException {if (response.body() null) {throw new DecodeException(response.status(), 没有返回有效的数据, response.request());}String bodyStr Util.toString(response.body().asReader(Util.UTF_8));//对结果进行转换TypeFactory typeFactory objectMapper.getTypeFactory();JavaType resultType typeFactory.constructParametricType(BaseResponse.class, typeFactory.constructType(type));BaseResponse? result objectMapper.readValue(bodyStr, resultType);//如果返回错误且为内部错误则直接抛出异常if (!BaseConstants.HTTP_RESPONSE_CODE_SUCCESS.equals(result.getCode())) {throw new DecodeException(response.status(), 接口返回错误 result.getMsg(), response.request());}return result.getData();} }配置类 BaseResponseFeignConfig public class BaseResponseFeignConfig {Beanpublic Decoder feignDecoder() {return new BaseResponseFeignDecoder();}}Feign接口定义 FinValidationFeign FeignClient(name masterdata, path /api/validation, configuration BaseResponseFeignConfig.class) public interface FinValidationFeign {// 各类feign接口 }问题排查 由于当前代码没有变动怀疑是解码器被别人的新开发的代码给覆盖了。但排查之后项目里并没有其他解码器相关的代码。 只能跟踪解码器的加载进行排查。 OpenFeign客户端会在应用启动时进行加载。 根据 FeignClient 注解跟踪到 org.springframework.cloud.openfeign.FeignClientsRegistrar 的 registerFeignClients 方法。 我们可以看到加载时通过registerClientConfiguration 方法加载自定义配置 通过代码可以看到注册的 beanName 为 name . FeignClientSpecification.class.getSimpleName() 也就是 masterdata.feignClientSpecification 由此可以看出当多个Client 的 name 一致时会使用最后一个加载的client的配置。 public void registerFeignClients(AnnotationMetadata metadata, BeanDefinitionRegistry registry) {LinkedHashSetBeanDefinition candidateComponents new LinkedHashSet();MapString, Object attrs metadata.getAnnotationAttributes(EnableFeignClients.class.getName());final Class?[] clients attrs null ? null : (Class?[]) attrs.get(clients);if (clients null || clients.length 0) {ClassPathScanningCandidateComponentProvider scanner getScanner();scanner.setResourceLoader(this.resourceLoader);scanner.addIncludeFilter(new AnnotationTypeFilter(FeignClient.class));SetString basePackages getBasePackages(metadata);// 通过扫包将 FeignClient 注解的代码都加载出来for (String basePackage : basePackages) {candidateComponents.addAll(scanner.findCandidateComponents(basePackage));}}else {for (Class? clazz : clients) {candidateComponents.add(new AnnotatedGenericBeanDefinition(clazz));}}// 循环初始化Feign客户端for (BeanDefinition candidateComponent : candidateComponents) {if (candidateComponent instanceof AnnotatedBeanDefinition) {// verify annotated class is an interfaceAnnotatedBeanDefinition beanDefinition (AnnotatedBeanDefinition) candidateComponent;AnnotationMetadata annotationMetadata beanDefinition.getMetadata();Assert.isTrue(annotationMetadata.isInterface(), FeignClient can only be specified on an interface);// 加载 FeignClient 注解的参数MapString, Object attributes annotationMetadata.getAnnotationAttributes(FeignClient.class.getCanonicalName());String name getClientName(attributes);// 处理自定义配置, 默认值 {}, 无自定义配置也会走这步registerClientConfiguration(registry, name, attributes.get(configuration));registerFeignClient(registry, annotationMetadata, attributes);}} }private void registerClientConfiguration(BeanDefinitionRegistry registry, Object name, Object configuration) {BeanDefinitionBuilder builder BeanDefinitionBuilder.genericBeanDefinition(FeignClientSpecification.class);builder.addConstructorArgValue(name);builder.addConstructorArgValue(configuration);// 根据name FeignClientSpecification 进行Spring的Bean注册registry.registerBeanDefinition(name . FeignClientSpecification.class.getSimpleName(),builder.getBeanDefinition()); }这时候再扭头过来看这两天加的代码发现新增了一个 同名name的client并且没配置自定义解码器加载顺序在 FinValidationFeign 之后导致他的配置覆盖掉了 FinValidationFeign 。一起变成了走默认的解码器。 FeignClient(name masterdata, path /api/query) public interface FinQueryFeign {// 各类feign接口 }解决方案 因为对应服务在重构返回值存在两个包装类没办法进行统一配置。 因为是beanName相同导致的配置覆盖而我们能修改的name是通过 String name getClientName(attributes); 获取的 可以看到 name 是优先获取 contextId , 我们可以通过配置contextId进行区分避免覆盖。 private String getClientName(MapString, Object client) {if (client null) {return null;}String value (String) client.get(contextId);if (!StringUtils.hasText(value)) {value (String) client.get(value);}if (!StringUtils.hasText(value)) {value (String) client.get(name);}if (!StringUtils.hasText(value)) {value (String) client.get(serviceId);}if (StringUtils.hasText(value)) {return value;}throw new IllegalStateException(Either name or value must be provided in FeignClient.class.getSimpleName());}解决后的代码 FeignClient(name masterdata, contextId masterdata-validation, path /api/validation, configuration BaseResponseFeignConfig.class) public interface FinValidationFeign {// 各类feign接口 }
http://www.w-s-a.com/news/18703/

相关文章:

  • 济南网站怎么做seowordpress注册发邮件
  • 珠海网站设计平台东莞市手机网站建设平台
  • 网站开发文档合同怎么在wordpress导航条下方加入文字广告链接
  • 网站建设需怎么做有网站怎么做企业邮箱
  • 网站制作流程视频教程小程序多少钱一年
  • 暗网是什么网站花都网站建设哪家好
  • 贵州网站开发流程晋江论坛手机版
  • 网站建设丿金手指谷哥14阿里巴巴官网电脑版
  • 网站开发招聘信息匿名ip访问网站受限
  • 网站转app工具网站规划建设与管理维护大作业
  • flash是怎么做网站的.net购物网站开发
  • 烟台网站建设求职简历品质商城网站建设
  • 做百度外链哪些网站权重高点做网站具备的条件
  • 怎么样用ppt做网站红番茄 网站点评
  • 建设银行河北分行招聘网站哪里能找到网站
  • 兰州营销型网站网站建设收费标准
  • 网站首页动图怎么做自己做网站很难
  • 自建网站如何盈利推广引流最快的方法
  • 网页设计网站结构图怎么弄网站用户 分析
  • 企业手机网站建设策划天津网页设计工作
  • 苏州vr全景网站建设公司怎么讲解网页的制作技术
  • 徐州智能建站怎么做苏州建设网站首页
  • 网站支付功能报价wordpress主页透明
  • asia域名的网站宁波模板建站源码
  • 官网网站怎么做个人网站盈利
  • 青龙桥网站建设网站同时做竞价和优化可以
  • 沭阳建设网站婴儿辅食中企动力提供网站建设
  • 常州做网站的公司济宁网站建设seo
  • 用wordpress做企业网站视频教程韶关建设网站
  • 怎么做一个免费的网站云南网站设计选哪家