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

网页制作与网站建设从入门到精通石家庄seo外包的公司

网页制作与网站建设从入门到精通,石家庄seo外包的公司,全球疫情最新数据实时报道,软件行业有哪些岗位想要环绕拦截一个 Bean 的函数。需要三个前置条件: 通过注解做为“切点”,进行拦截(不能无缘无故给拦了吧?费性能)Bean 的 method 是被代理的在 Bean 被扫描之前,完成环绕拦截的注册 1、定义切点和注册环…

想要环绕拦截一个 Bean 的函数。需要三个前置条件:

  1. 通过注解做为“切点”,进行拦截(不能无缘无故给拦了吧?费性能)
  2. Bean 的 method 是被代理的
  3. 在 Bean 被扫描之前,完成环绕拦截的注册

1、定义切点和注册环绕拦截

Solon 的切点,通过注解实现,得先定义一个。例如:@Logging

//@Target 是决定可以注在什么上面的
@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface Logging {boolean enable() default true;
}

定义拦截器

//简单点处理
@Slf4j
public class LoggingInterceptor implements Interceptor {@Overridepublic Object doIntercept(Invocation inv) throws Throwable {//此处为拦截处理Object rst = inv.invoke();log.info("Args: {}\nReturn: {}", inv.args(), rst);return rst;}
}//如果需要取注解信息,并进行控制
@Slf4j
public class LoggingInterceptor2 implements Interceptor {@Overridepublic Object doIntercept(Invocation inv) throws Throwable {Logging anno = inv.method().getAnnotation(Logging.class);if (anno == null) {//因为 Logging 支持 ElementType.TYPE,所以也要检查类上的注解anno = inv.target().getClass().getAnnotation(Logging.class);}//此处为拦截处理Object rst = inv.invoke();if(anno != null && anno.enable()){log.info("Args: {}\nReturn: {}", inv.args(), rst);}return rst;}
}

手动注册或关联绑定环绕拦截(二种模式,选一即可)

//手动注册模式
Solon.context().beanAroundAdd(Logging.class, new LoggingInterceptor());//关联绑定模式(通过@Around注解,直接在注解类上关联绑定)
@Around(LoggingInterceptor.class)
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface Logging {
}

现在切点定义好了,可以到处“埋”了…

2、应用:把切点“埋”到需要的地方

@Service
public class DemoController{@Loggingpublic void addUser(UserModel user){//...}
}

就这样完成一个面向切面的开发了。

3、通过插件及插件配置,变成一个复用的东西

这是刚才定义注解:

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

开发插件:

@Slf4j
public class XPluginImp implements Plugin {@Overridepublic void start(AopContext context) {context.beanAroundAdd(Logging.class, inv->{Object rst = inv.invoke();log.info("Args: {}\nReturn: {}", inv.args(), rst);});}
}

配置插件:

solon.plugin=xxx.xxx.log.XPluginImp

一个可复用的插件开发完成了。关于Solon插件开发,可参考别的章节内容。

http://www.15wanjia.com/news/22534.html

相关文章:

  • 博彩网站做维护百度热榜实时热点
  • 广州网站开发流量主广告点击自助平台
  • 安徽建设学校官方网站搜索引擎排名2021
  • 最专业的网站建设机构上海seo网站排名优化公司
  • 程序员知识网站需要多少钱营销网站建设门户
  • 代运营推广公司优化视频
  • 庆云网站建设ihuibest最近的新闻热点时事
  • 自己做网站百度能收录码西藏自治区seo 标题 关键词优化
  • 网站建设用哪种语言好广州网络推广seo
  • 建设社会主义法治国家的参考网站2023年10月疫情还会严重吗
  • 湖南建设信誉查询网站广州seo网站推广平台
  • wordpress页面和菜单的作用关键词优化排名费用
  • 网站建设管理岗位职责广州网站外包
  • 如何用ps做网站网页足球进球排行榜
  • 金融手机网站开发亚马逊查关键词排名工具
  • 在上海做家教的网站网络广告联盟
  • 白和黑人做网站google浏览器下载安装
  • 济南做网站优化如何让百度能查到自己
  • 做商品二维码检测的网站百度认证考试
  • 网站关键词字符编辑网络营销运营策划
  • 怎么查网站icp备案全网自媒体平台
  • 把excel做数据库分享成网站在线域名查询网站
  • wordpress个性登录插件北京搜索引擎优化seo专员
  • 什么网站有教做变蛋的个人外包接单平台
  • 有哪些测试网站设计非常出色的游戏推广员骗局
  • 制作b2b网站开发免费b站推广网站不
  • 百度为什么不收录网站的某个版块免费网站alexa排名查询
  • 广东网页空间网站最近国际新闻大事
  • 男女之间做下面哪个网站免费网络推广平台有哪些?
  • 网站开发环境包括什么百度软件下载中心官方网站