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

做短袖的网站小说推广接单平台

做短袖的网站,小说推广接单平台,寺院的网站怎么做,韩国女足还能出线吗说明 说到对类方法增强,第一时间想到自定义注解,通过aop切面进行实现。这是一种常用做法,但是在某些场景下,如开发公共组件,定义aop切面可能不是最优方案。以后通过原生aop方式,自定义注解,对类…

说明

说到对类方法增强,第一时间想到自定义注解,通过aop切面进行实现。这是一种常用做法,但是在某些场景下,如开发公共组件,定义aop切面可能不是最优方案。以后通过原生aop方式,自定义注解,对类方法进行增强。

实现

自定义注解

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface CustomStat {
}

自定义切点

/*** 切点(Pointcut),按照规则匹配需要代理的方法*/
@Slf4j
public class CustomPointcut extends StaticMethodMatcherPointcut implements ClassFilter {@Overridepublic boolean matches(Class<?> clazz) {boolean contains = clazz.getName().contains("com.spring.demo.service");if (contains) {log.info("CustomPointcut:{}",clazz.getName());}return contains;}@Overridepublic boolean matches(Method method, Class<?> targetClass) {boolean contains = targetClass.getName().contains("com.spring.demo.service");if (contains) {log.info("CustomPointcut:{}",targetClass.getName());}return contains;}
}

自定义增强器

public class CustomAnnotationAdvisor extends AbstractPointcutAdvisor implements BeanFactoryAware, Ordered {private Advice advice;private Pointcut pointcut;private MethodInterceptor methodInterceptor;public CustomAnnotationAdvisor(MethodInterceptor methodInterceptor) {this.methodInterceptor = methodInterceptor;this.advice = buildAdvice();this.pointcut = buildPointcut();}@Overridepublic Pointcut getPointcut() {return this.pointcut;}@Overridepublic Advice getAdvice() {return this.advice;}@Overridepublic void setBeanFactory(BeanFactory beanFactory) throws BeansException {if (this.advice instanceof BeanFactoryAware) {((BeanFactoryAware) this.advice).setBeanFactory(beanFactory);}}protected Advice buildAdvice() {return methodInterceptor;}protected Pointcut buildPointcut() {//构建切点Pointcut cpc = new AnnotationMatchingPointcut(CustomStat.class, true);Pointcut mpc = AnnotationMatchingPointcut.forMethodAnnotation(CustomStat.class);return new ComposablePointcut(cpc).union(mpc);}@Overridepublic int getOrder() {return Integer.MAX_VALUE;}
}

其中构造参数中的MethodInterceptor为最终代理拦截器

自定义拦截器

@Slf4j
@Component
public class CustomAnnotationInterceptor implements MethodInterceptor {@Overridepublic Object invoke(MethodInvocation invocation) throws Throwable {//调用的方法和参数//Method method = invocation.getMethod();// Object[] arguments = invocation.getArguments();log.info("start-注解aop拦截器");Object proceed = invocation.proceed();log.info("end-注解aop拦截器");return proceed;}
}

注册增强器

@Component
public class CustomAnnotationBeanPostProcessor extends AbstractAdvisingBeanPostProcessor implements BeanFactoryAware {@Resourceprivate CustomAnnotationInterceptor customAnnotationInterceptor;@Overridepublic void setBeanFactory(BeanFactory beanFactory) throws BeansException {setBeforeExistingAdvisors(true);CustomAnnotationAdvisor advisor = new CustomAnnotationAdvisor(customAnnotationInterceptor);advisor.setBeanFactory(beanFactory);this.advisor = advisor;}
}

测试

    @Override@CustomStatpublic void printWork() {System.out.println("WorkServiceImpl1");}

结果

2024-05-21 08:55:26.486  INFO 41351 --- [nio-8081-exec-5] c.s.d.a.CustomAnnotationInterceptor      : start-注解aop拦截器
WorkServiceImpl1
2024-05-21 08:55:26.486  INFO 41351 --- [nio-8081-exec-5] c.s.d.a.CustomAnnotationInterceptor      : end-注解aop拦截器
http://www.tj-hxxt.cn/news/58991.html

相关文章:

  • 郑州高端品牌网站建设上海高端seo公司
  • 站长工具怎么用seo外包杭州
  • 柳州中小企业网站建设sem推广竞价托管
  • 如何复制单页面网站网站流量查询
  • 黄石网站建网站优化公司收费
  • wordpress 链接 拼音百度seo怎么把关键词优化上去
  • 漳州做网站匹配博大钱少a大数据查询
  • 浙江省网站建设公司seo搜索优化招聘
  • wordpress个人主页主题怎么卸载windows优化大师
  • 做境外的赌博网站违法么常德政府网站
  • 北京专业网站制作价格阿里大数据分析平台
  • 找做网站个人宁波seo网络推广多少钱
  • 只做乡村旅游的网站app开发费用标准
  • 网站建设业务爱站网使用体验
  • 40岁学平面设计能找到工作吗seo关键词排名优化品牌
  • web网站开发流程图自建站seo如何做
  • 哪些网站做婚纱摄影常见的网站推广方式有哪些
  • net做网站2022重大时政热点事件简短
  • 家居网站建设定位分析论文利用搜索引擎营销成功的案例
  • 邯郸菜鸟网站建设百度指数官网登录
  • 公司网站制作应该注意些什么深圳网站设计实力乐云seo
  • 廊坊做网站的公司seo外链在线提交工具
  • 深圳网站公司哪家好海外互联网推广平台
  • 100m光纤做网站互联网运营自学课程
  • 河北大良网站建设百度知道官网
  • 做個app网站价格怎样在百度上发布自己的信息
  • 二级域名网站如何seo外包公司需要什么
  • 做网站图片教程seo详细教程
  • 虚拟主机和网站空间自己如何优化网站排名
  • 新手做网站教程搜索引擎营销的简称