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

淘宝上面如何做网站最简单的网站怎么做

淘宝上面如何做网站,最简单的网站怎么做,网站改版重新收录,网站如何屏蔽ip目录 引言 设计思路: 代码实现: 标注注解:@StrategyClass 扫描注解:trategyScan 注册器抽象类: 动态策略注册类: AOP类: 总结: 引言 曾经有人问我,假如有一个业务或者数据处理逻辑,会根据甲方客户繁杂的业务需求,而动态变化,该怎么处理,具体怎么实现? 将…目录 引言 设计思路: 代码实现: 标注注解:@StrategyClass 扫描注解:trategyScan 注册器抽象类: 动态策略注册类: AOP类: 总结: 引言 曾经有人问我,假如有一个业务或者数据处理逻辑,会根据甲方客户繁杂的业务需求,而动态变化,该怎么处理,具体怎么实现? 将所有策略strategy都写出来,然后放入一个hashMap,根据不同的业务需求,调用不同的策略就行了。 再问:那如果我的策略动态多变,再将strategy放入Map的代码,不想写死,不想频繁的修改代码怎么实现?比如我将策略代码写入项目下某个文件夹下面某个文件里,或者直接存入数据库某张表里,策略代码用text类型字段存起来,再调用构建接口,将策略逻辑用类加载器,加载出来,动态的创建为一个个新的strategy对象呢? 读取文件或者text字段,并解析为java代码,编译后,用类加载的方式加载,并且注册进Map,这个稍微复杂,但是我可以实现,只用在代码中添加策略,但是不用修改注册逻辑代码的方式。 设计思路: 所有需要被自动添加的策略类 Strategy 都必须加注解 再做一个扫描注解,属性包含:标明需要被扫描的包路径,@Import 标注一个注册器(实现ImportBeanDefinitionRegistrar), 定义一个注册器,实现ImportBeanDefinitionRegistrar,该注册器可以根据上述注解找到所有被注解标注的类,然后获取到标注的名称,实例化该类,并注册入指定的缓存。 将此注解加注在springboot启动类上面就可以在项目启动的时候,按照指定的包路径去扫描指定注解的类,然后利用反射机制,获取到扫描到的(被标注注解的)类的元空间,有了元空间,不管是获取该类上的注解,注解属性,还是该类的属性,方法都是没问题的。那么就可以获取到被扫描到的策略strategy的名字,再利用反射 clazz.newInstance() 创建出实例,放入缓存,就解决了动态注册策略的目的了。 除了对反射的利用,还需要对spring 容器有一定的理解,才能利用spring容器的environment, resourceLoader ,做出扫描器,使用resourceLoader 扫描该环境下,所有带注解的类;再根据指定的注解,过滤出目标类。 代码实现: 标注注解:@StrategyClass import io.swagger.v3.oas.annotations.tags.Tag; import java.lang.annotation.*;/*** @Title: StrategyClass* @Description: 用来标记需要被注册的strategy* @Author: wenrong* @Date: 2024/4/2 10:02* @Version:1.0*/@Inherited @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.TYPE) public @interface StrategyClass {/*** 策略名* 为空时,会尝试读取 {@link Tag#name()} 属性*/String strategyName() default "";} 扫描注解:trategyScan @DynamicStrategyScan注解标记在springboot启动类上,在springboot启动的时候,就会扫描@StrategyClass 注解的策略类,并开始自动添加到Map 缓存。 import org.springframework.context.annotation.Import; import java.lang.annotation.*;/*** @Title: DynamicStrategyScan* @Description: 用来扫描有动态策略注解的类,并初始化成相应的配置,注册到JVM 缓存* @Author: wenrong* @Date: 2024/4/2 15:27* @Version:1.0*/ @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.TYPE) @Import(DynamicStrategyRegister.class) @Documented public @interface DynamicStrategyScan {String[] value() default {};String[] basePackages() default {}; } 注册器抽象类: 因为可能不光策略需要被注册,其他的也可能需要被注册,所以这里这里做一下抽象: import org.springframework.beans.factory.annotation.AnnotatedBeanDefinition; import org.springframework.beans.factory.support.BeanDefinitionRegistry; import org.springframework.context.EnvironmentAware; import org.springframework.context.ResourceLoaderAware; import org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider; import org.springframework.context.annotation.ImportBeanDefinitionRegistrar; import org.springframework.core.env.Environment; import org.springframework.core.io.ResourceLoader; import org.springframework.core.type.AnnotationMetadata; import org.springframework.util.ClassUtils; import org.springframework.util.StringUtils;import java.lang.annotation.Annotation; import java.util.HashSet; import java.util.Map; import java.util.Set;/*** @Title: AnnotationScanAndRegister* @Description:* @Author: wenrong* @Date: 2024/4/2 15:35* @Version:1.0*/ public abstract class AnnotationScanAndRegister implements ImportBeanDefinitionRegistrar, ResourceLoaderAware, EnvironmentAware {/*** 资源加载器*/protected ResourceLoader resourceLoader;/*** 环境*/protected Environment environment;@Overridepublic void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) {ImportBeanDefinitionRegistrar.super.registerBeanDefinitions(importingClassMetadata, registry);}/*** author: wenrong* date: 2024/4/2 15:36* 获取base packages*/protected static SetString getBasePackages(AnnotationMetadata importingClassMetadata, Class? extends Annotation
http://www.hkea.cn/news/14482823/

相关文章:

  • 哈尔滨公司网站建设wordpress后台发布文章发不
  • 如何编写一份网站开发需求文档个人备案网站内容
  • 校园网站建设的意义wordpress 权限 页面
  • 电脑建设网站服务器企业购 网站建设
  • 猎场第几集做的网站推广网络seo营销推广
  • 大鹏网络网站建设报价企业网站 asp源码
  • 建设通网站公路查询网站两边广告
  • 织梦菜谱网站模板免费下载怎样创建自己的网页
  • php主做哪种类型网站大宗商品交易平台
  • 搭建一个网站需要多久用dw做网站怎么上传到网站上
  • 国外有名的设计网站用什么软件制作动画视频
  • 肇庆百度网站推广做网站如何被收录
  • 成都网站建设zmcms鹿城做网站
  • 温州网站建设培训学校代做百度收录排名
  • 网站建立需要多久清远网站制作公司
  • 襄阳蒂凯网络网站建设小程序餐饮店会员卡管理系统
  • 网站贸易表格怎么做企业网站开发外包公司
  • 上海企业网站设计公司柳州建设网栗园新居
  • 各大搜索引擎网站登录入口湖南哪里有做网站的
  • 中通建设计院网站wordpress 文章缩放
  • 西安免费做网站价格河北网站开发哪家好
  • 外贸手工做兼职的网站延安做网站的公司电话
  • 网站模板带后台 下载龙岗网站建设哪家技术好
  • 潍坊网页模板建站淘宝客网站怎么做优化
  • 河津网站建设网站建设网页设计与网页制作
  • 用ps做网站还是wdwordpress 评论不了
  • 网站设计初步规划农家乐网站模板
  • it之家网站源码wordpress 谷歌收录
  • 母婴行业网站建设关于网站建设实训报告
  • 对网站做数据统计的目的是什么烟台微信网站建设