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

微网站 杭州wordpress用户注册后台

微网站 杭州,wordpress用户注册后台,常用网址,苏州做网站套路骗天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…

天行健,君子以自强不息;地势坤,君子以厚德载物。


每个人都有惰性,但不断学习是好好生活的根本,共勉!


文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。


君不见,黄河之水天上来,奔流到海不复回。
君不见,高堂明镜悲白发,朝如青丝暮成雪。
——《将进酒


文章目录

  • AOP切点表达式之方法表达式execution
    • 1. 表达式语法和参数说明
    • 2. 常用表达式举例
      • 2.1 拦截指定包下所有类的所有方法(不包含该包下的子包)
      • 2.2 拦截指定包下所有类的所有方法(包含该包下的子包)
      • 2.3 拦截指定包下一级子包的所有类的所有方法(不包含该包下的子包下的子包)
      • 2.4 拦截当前包下指定类的所有方法
      • 2.5 拦截指定包下指定类的所有公共(public)方法
      • 2.6 拦截指定包下指定类的所有返回值类型为Integer的方法
      • 2.7 拦截指定包下指定类的所有入参第一个参数为String的方法
      • 2.8 拦截所有带有指定注解的所有方法
    • 3. 组合表达式
      • 3.1 与&&
      • 3.2 或||
      • 3.3 非!
    • 4. 注意事项
      • 4.1 Tips1
      • 4.2 Tips2
      • 4.3 Tips3
  • 加分加分
    • 1. 加分
    • 2. 加分
    • 3. 加分
    • 4. 加分
      • 4.1 加分1
      • 4.2 加分2
      • 4.3 加分3
      • 4.4 加分4


AOP切点表达式之方法表达式execution

关于aop的完整详细版可跳转到链接:Java AOP 介绍与实践

使用execution(方法表达式)进行匹配方法执行

1. 表达式语法和参数说明

语法

execution([修饰符] 返回类型 [包.类.方法] (参数))

其中方括号[]中的参数是可以加上也可以不加

参数说明

  • 修饰符
    可选,指定方法的访问修饰符,如public、private等
  • 返回类型
    必填,指定方法的返回类型,可用*表示匹配任意类型
  • 包.类.方法
    可选,指定类和方法的全限定名,*表示匹配任意类型或者方法
  • 参数
    必填,指定方法的参数列表,…表示匹配任意参数

2. 常用表达式举例

2.1 拦截指定包下所有类的所有方法(不包含该包下的子包)

如拦截com.aop.controller包下的所有类的方法
表达式

execution(* com.aop.controller.*.*(..))

说明

匹配指定包中的所有方法
第一个*表示所有返回值类型
com.aop.controller是包的全限定名
第二个*是所有类,第三个*是所有方法
最后的(..)是参数,表示任意参数

2.2 拦截指定包下所有类的所有方法(包含该包下的子包)

如拦截com.aop包下的所有类的方法,包含其子包下的类的所有方法
如com.aop.common包下的类的所有方法
com.aop.controller包下的类的所有方法
com.aop.common.test包下的类的所有方法
等等
都会被拦截到

表达式

execution(* com.aop..*.*(..))

或者直接省略类的表示

execution(* com.aop..*(..))

说明

匹配指定包中的所有方法,包含其子包下的类的所有方法
第一个*表示所有返回值类型
com.aop是包的全限定名
第二个*是所有类,第三个*是所有方法
最后的(..)是参数,表示任意参数

2.3 拦截指定包下一级子包的所有类的所有方法(不包含该包下的子包下的子包)

如拦截com.aop包下一级子包的所有类的方法,不包含一级子包下的子包的类的所有方法
如com.aop.common包下的类的所有方法
com.aop.controller包下的类的所有方法
等等
都会被拦截到
而com.aop包下子包的子包则不会拦截
如com.aop.common.test包下的类的所有方法不会被拦截

表达式

execution(* com.aop.*.*.*(..))

说明

匹配指定包中的所有方法,包含其子包下的类的所有方法
第一个*表示所有返回值类型
com.aop.*是包的全限定名
第二个*是aop包下一级的所有包,不含其下一级以下的子包
第三个*是所有类,第四个*是所有方法
最后的(..)是参数,表示任意参数

2.4 拦截当前包下指定类的所有方法

当前包指的是切面类所在的包
如切面类AopAspectJ.java类在com.aop.common包下,则该包就是当前包,此时匹配时无需加包名
如拦截当前包下的指定类AopTest2Controller.java的所有方法

表达式

execution(* AopTest2Controller.*(..))

也可使用*模糊匹配类名
如前缀匹配,匹配以AopTest2开头的类名

execution(* AopTest2*.*(..))

后缀匹配,匹配以2Controller结尾的类名

execution(* *2Controller.*(..))

2.5 拦截指定包下指定类的所有公共(public)方法

方法修饰符可以是public、private等,可根据修饰符不同进行匹配
如拦截com.aop.common包下AopTest2Controller.java类中所有public修饰的方法

表达式

execution(public * com.aop.common.AopTest2Controller.*(..))

2.6 拦截指定包下指定类的所有返回值类型为Integer的方法

返回值类型可以是很多种类型,如String、Integer、Object等
如拦截com.aop.common包下AopTest2Controller.java类中所有返回类型为Integer的方法

表达式

execution(Integer com.aop.common.AopTest2Controller.*(..))

这里需要注意,使用的是Integer而非int,我这里试了下int会报错,你可以测试一下,暂时不清楚原因

2.7 拦截指定包下指定类的所有入参第一个参数为String的方法

方法的参数列表可以多样的,可精准匹配指定入参的方法
如拦截com.aop.common包下AopTest2Controller.java类中所有第一个入参为String类型的方法

表达式

execution(* com.aop.common.AopTest2Controller.*(String, ..))

2.8 拦截所有带有指定注解的所有方法

拦截带有某个注解的所有方法
如拦截带有@Scheduled注解的所有方法,注解需要使用全限定名(即@加上import后面跟的全部)
所有带有@Scheduled注解的方法在自动执行时都会被拦截

表达式

execution(@org.springbframework.scheduling.annotation.Scheduled * *(..))

3. 组合表达式

通过与或非(and/or/not)进行组合表达式拦截

3.1 与&&

使用&&来实现同时满足两个或多个条件的

execution(* com.aop.common.AopTest2Controller.*(..)) && execution(* com.aop.controller.AopTestController.*(..))

3.2 或||

使用||来实现多个条件匹配(满足其一即可)
如拦截com.aop.common.AopTest2Controller类或com.aop.controller.AopTestController下的所有方法

execution(* com.aop.common.AopTest2Controller.*(..)) || execution(* com.aop.controller.AopTestController.*(..))

3.3 非!

使用!来实现排除某种情况之外的部分执行(非的符号位英文感叹号!)
如拦截com.aop.common.AopTest2Controller类所有方法以外的所有方法

!execution(* com.aop.common.AopTest2Controller.*(..))

4. 注意事项

4.1 Tips1

在使用表达式时,包的路径在开始包com后至少加上一级包名,后面才可以使用*进行模糊匹配,即,开始都需要以com.aop开始(我这里com下面是aop,你根据自己的包名进行使用),后面进行模糊匹配定义
com.aop.*.*.*(..),每一个*代表一级包,最后的两个*表示类和方法
..表示多级包,如com.aop..*(..),表示aop下的所有方法包括其子包

4.2 Tips2

在使用带有Integer的表达式时,在方法的返回值类型上,需定义包装类,也就是Integr,而不是int,不然会报错(org.springframework.aop.AopInvocationException: Null return value from advice does not match primitive return type for: public int com.aop.common.Test4Controller.test1())

4.3 Tips3

在使用最后一个定时任务注解时,需要先参考文章实现定时任务功能,再进行aop的配置
Java定时任务@Scheduled的使用


感谢阅读,祝君暴富!


版权声明:

  • 作者:寒山李白
  • 博客地址:https://hanshan.blog.csdn.net/
  • 版权:本作品采用《创作共享许可证》进行许可,根据该许可授权的内容可在符合本许可证条款的前提下自由使用、、修改和创作衍生作品。

版权许可介绍:
本文采用CC BY-NC-SA许可证
此许可允许在使用者仅出于非商业目的以任何媒体或格式分发、重新混合、改编和构建材料,并且前提是注明创作者。如果您重新混合、改编或基于该材料进行构建,则必须按照相同的条款对修改后的材料进行许可。

更多信息请访问以下网址查看:
版权官网 https://creativecommons.org/licenses/by-nc-sa/4.0/
中文翻译 https://creativecommons.org/licenses/by-nc-sa/4.0/deed.zh-hans


文章结束

--------------------------------------------------------------------------------------------------------------------------------------

以下内容增加文章评分用,可忽略

加分加分

黄河之水天上来,奔流到海不复回
高堂明镜悲白发,朝如青丝暮成雪

1. 加分

黄河之水天上来,奔流到海不复回
高堂明镜悲白发,朝如青丝暮成雪

2. 加分

黄河之水天上来,奔流到海不复回
高堂明镜悲白发,朝如青丝暮成雪

3. 加分

寒山李白
寒山李白

4. 加分

账号密码

名称密码
李白123

4.1 加分1

账号密码

名称密码
李白123

4.2 加分2

账号密码

名称密码
李白123

4.3 加分3

账号密码

名称密码
李白123

4.4 加分4

账号密码

名称密码
李白123

http://www.yayakq.cn/news/246014/

相关文章:

  • 3d建模网站公司品牌logo设计
  • 陕西网站设计视频网站建设难吗
  • 免费注册163邮箱网站内部优化策略
  • 手机网站开发公司哪家最专业广西南宁网站设计
  • 格力电器的网站建设评价成立公司的可行性报告
  • 外贸网站推广 雅虎问答有用吗jsp制作网站
  • 安徽望江县城乡建设局官方网站上海市建设执业注册中心网站
  • 成都网站设计成功柚v米科技东莞松山湖凯悦酒店
  • 5173游戏交易网站源码网站开通流程
  • wordpress小说网站主题有哪些网站可以免费看电影
  • 一个网站的二维码怎么做建立音乐网站
  • 网站换程序301杭州百度快照优化公司
  • 千享科技网站建设合肥网站优化平台
  • 网站开发需要哪些人才养老保险网站
  • 网站名超链接怎么做深圳航空公司订票电话
  • 课程精品网站开发建筑工程最新规范查询
  • dede门户网站模版中建八局第一建设有限公司董事长
  • 网站购买wordpress怎么添加二级链接
  • 网站临时域名企业宣传网站建设模板
  • 统一门户网站建设参考规范网站建设对标行业分析
  • 顶尖网站设计公司wordpress插件页面好卡
  • 仿京东网站怎样做网站内链
  • 旅游门户网站建设天津做网站比较好的公司
  • 闻喜网站建设外贸soho怎么做网站
  • vs做网站mvc网页设计与制作教程刘瑞新
  • 包小盒设计网站产品网络营销策划
  • 宠物网站首页模板wordpress 热门关键字
  • 德阳市住房和城乡建设局网站网站开发类论文
  • 中国建设银行积分商城网站大数据营销的特征有哪些
  • 网站备案北京管局网站上传后打不开