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

科技类网站色彩搭配怎么给别人做网站优化

科技类网站色彩搭配,怎么给别人做网站优化,wordpress主题修改颜色教程,phpmysql网站开发项目式教程说明 说到对类方法增强,第一时间想到自定义注解,通过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.yayakq.cn/news/833273/

相关文章:

  • 淄博建设局官方网站网站建设免费加盟代理
  • 深圳均安网站制作徐州有哪些网站制作公司
  • 枣庄网站建设制作活动策划网站
  • 一手房哪个网站做信息效果好wordpress是php语言
  • 重庆市企业网站建设焦作整站优化
  • 企业网站建设运营企业如何进行品牌推广
  • 网站制作遨游免费机械外发加工网
  • 做网站需要多少台服务器济南精品建站外包公司价格
  • 网站策划技巧公司网站运营公司排名
  • 网站分页代码开发一个交易平台需要多少钱
  • 哪个旅游网站做的最好套别人的网站模板
  • 怎样做博客网站县城做网站
  • 做网站需要哪些软件建设一个门户网站
  • 商城网站页面设计汉字logo标志设计
  • 河北省住房和城乡建设部网站首页搜索引擎排名影响因素有哪些
  • 南京定制网站建设c2c网站建设价格
  • v2017网站开发网站建站是 什么
  • 想要给网站投稿如何做烟台建设银行网站
  • 免费网站无需下载直接观看石家庄营销网站建设多少钱
  • 微网站教程wordpress app 插件
  • 开源的网站系统ps怎样做网站设计
  • 仿站酷网站模板怎么看网站是谁做的
  • 阳江哪里做网站个人与公司网站备案
  • 宁波seo网站推广软件网店代运营哪家好
  • 网站开发合同协议郑州旅游网站建设
  • 中为网站建设ui设计学徒
  • 网站seo优化管理系统一键生成100个原创视频
  • 城关区建设局网站手机网站使用微信支付
  • 那些做环保网站的好哪里制作网站好
  • 哈尔滨企业建站服务商蒙icp备网站建设