配置

1.引入aop jar包

2.在主类上面加@EnableAspectJAutoProxy


这里要说一句:市面上常用有两种aop实现方式第一种是springaop,第二种是AspectJ,但是原始springaop的语法非常复杂,而AspectJ语法非常简单所有后来spring借用其语法方式,使用@EnableAspectJAutoProxy就是开启AspectJ编码方式,而不直接用AspectJ是因为:
1.Spring的AOP是基于动态代理的,动态增强目标对象,而AspectJ是静态编译时增强,需要使用自己的编译器来编译,还需要织入器.
2.使用AspectJ编写的java代码无法直接使用javac编译,必须使用AspectJ增强的ajc增强编译器才可以通过编译,写法不符合原生Java的语法;而Spring AOP是符合Java语法的,也不需要指定编译器去编译,一切都由Spring 处理.

3.这样就可以开始使用写切面类了

/**https://www.cnblogs.com/wangshen31/p/9379197.html* 首先,这个@Aspect注释告诉Spring这是个切面类* @Compoment将转换成Spring容器中的bean或者是代理bean,其实就是告诉spring这是配置类,不用xml* 总之要写切面这两个注解一起用就是了。* 既然是切面类,那么肯定是包含PointCut还有Advice两个要素的,*下面对几个注解展开讲来看看在@Aspect中是怎么确定切入点(PointCut)和增强通知(Advice)的。*/
@Aspect
@Component
public class WebLogAspect {private final Logger logger = LoggerFactory.getLogger(WebLogAspect.class);//切入点描述 这个是controller包的切入点 不用写方法这里只高所连接点是什么@Pointcut("execution(public * com.yuanpeng.controller..*.*(..))")public void controllerLog(){}/**@Pointcut 这个就是连接点集合,上面写的就是所有controller下的类的所有方法@Pointcut后面的表达式是这里最难的https://www.jianshu.com/p/fbbdebf200c9 这里有详细解释*/@Before("controllerLog()") //在切入点的方法run之前要干的/**这里就是Advice加入方法时机,这种方法统称叫通知,在这里选上面的@Pointcut方法名,然后写你要的方法就好了@Before:在切点方法前执行@After:在切点方法后执行@Around:在切点方法外环绕执行 多用于事物吧@AfterThrowing: 在异常抛出前进行处理,比如记录错误日志@AfterRetruning: 在方法返回之前,获取返回值并进行记录操作**/public void logBeforeController(JoinPoint joinPoint) {RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();//这个RequestContextHolder是Springmvc提供来获得请求的东西HttpServletRequest request = ((ServletRequestAttributes)requestAttributes).getRequest();// 记录下请求内容logger.info("################URL : " + request.getRequestURL().toString());logger.info("################HTTP_METHOD : " + request.getMethod());logger.info("################IP : " + request.getRemoteAddr());logger.info("################THE ARGS OF THE CONTROLLER : " + Arrays.toString(joinPoint.getArgs()));//下面这个getSignature().getDeclaringTypeName()是获取包+类名的   然后后面的joinPoint.getSignature.getName()获取了方法名logger.info("################CLASS_METHOD : " + joinPoint.getSignature().getDeclaringTypeName() + "." + joinPoint.getSignature().getName());logger.info("################TARGET: " + joinPoint.getTarget());//返回的是需要加强的目标类的对象logger.info("################THIS: " + joinPoint.getThis());//返回的是经过加强后的代理类的对象}}

上面就是aop简单的使用方法,我用aop做了日志记录,每个方法进出时间,操作人什么的,下一步准备使用aop写异常处理,但是一点头绪都没有.我要闭关几天了,(异常这块的知识我太薄弱了所以想找个这方面教学,谁有请给个视频什么的,万分感激.)

springAop学习笔记(二,springboot进本配置和使用)相关推荐

  1. ES学习笔记(二):集群配置与启动 --mac环境

    1 环境准备: 复制原有es文件,分别为三个文件夹:Node-8001,Node-8002,Node-8003 删除三个文件夹中的data文件,清除log文件 修改配置文件 1.1修改配置文件 配置文 ...

  2. Spring Boot 框架学习笔记(二)(配置文件与数据注入 yaml基本语法 JSR303数据验证 多环境切换 )

    Spring Boot 框架学习笔记(二) 六.appliaction.properties配置与数据注入 6.1 `@Value`注解 测试注入数据 读取输入流 6.2 读取配置文件数据注入 单文件 ...

  3. SpringBoot学习笔记(4)----SpringBoot中freemarker、thymeleaf的使用

    1. freemarker引擎的使用 如果你使用的是idea或者eclipse中安装了sts插件,那么在新建项目时就可以直接指定试图模板 如图: 勾选freeMarker,此时springboot项目 ...

  4. Kotlin学习笔记(1)- 环境配置

    系列文章全部为本人的学习笔记,若有任何不妥之处,随时欢迎拍砖指正.如果你觉得我的文章对你有用,欢迎关注我,我们一起学习进步!kotlin学习笔记系列首发简书和CSDN Kotlin学习笔记(1)- 环 ...

  5. SpringBoot学习笔记(9)----SpringBoot中使用关系型数据库以及事务处理

    在实际的运用开发中,跟数据库之间的交互是必不可少的,SpringBoot也提供了两种跟数据库交互的方式. 1. 使用JdbcTemplate 在SpringBoot中提供了JdbcTemplate模板 ...

  6. SpringBoot学习笔记(16)----SpringBoot整合Swagger2

    Swagger 是一个规范和完整的框架,用于生成,描述,调用和可视化RESTful风格的web服务 http://swagger.io Springfox的前身是swagger-springmvc,是 ...

  7. pythonsze_python学习笔记二 数据类型(基础篇)

    Python基础 对于Python,一切事物都是对象,对象基于类创建 不同类型的类可以创造出字符串,数字,列表这样的对象,比如"koka".24.['北京', '上海', '深圳' ...

  8. CAS单点登录学习笔记二之部署CAS Server

    CAS Server 服务器部署 [b]简介[/b] CAS Server 是一套基于 Java 实现的服务,该服务以一个 Java Web Application 单独部署在与 servlet2.3 ...

  9. 【Springboot学习笔记】SpringBoot+Mybatis+Thymeleaf+Layui数据表单从零开始实现按条件模糊分页查询的方法

    [Springboot学习笔记]SpringBoot+Mybatis+Thymeleaf+Layui数据表单从零开始实现按条件模糊分页查询的方法 目录 1.搭建环境 1.1直接从网上下载SpringB ...

最新文章

  1. python贴吧回帖-python控制浏览器爬取百度贴吧回复并写入Excel
  2. python 栈和队列 排序 初级数据结构
  3. 信捷步进指令的使用_【笔记】信捷plc应用,指令篇
  4. python文件分发_python 写一个文件分发小程序
  5. linux vi 批量修改某类字符串
  6. wpf treeView,避免横向滚动条自动偏移。 ContentHorizontalOffset
  7. linux fmt命令
  8. 通用唯一识别码UUID
  9. 使用多线程完成Socket
  10. mysql 递归查找父节点_MySQL递归查询树状表的子节点、父节点具体实现
  11. squirrelmail+change_sqlpass 认证 问题
  12. Tensorflow笔记:搭建神经网络
  13. 现代信号处理——自适应滤波器(离散维纳滤波器)
  14. Enterprise Library
  15. ios 旋转屏幕试图切换_iOS播放器横竖屏切换的实现
  16. crontab 每天凌晨12点定时器_Linux下使用crontab实现mysql数据库自动备份
  17. LINUX基础知识笔记全
  18. thinkpad e450c蓝牙重新安装后不能搜索到手机解决方案--适用大部分笔记本
  19. oracle导出辅助账明细,AO2011导入国库集中支付系统3.0的辅助账资料.doc
  20. 2021双十一京东活动脚本

热门文章

  1. 如何在抖音主页添加官方联系电话?
  2. 时间管理黄金法则分享,让职场的你受益一生
  3. 移动端 input 调用手机键盘搜索功能
  4. parameter缩略语_常用参数缩写
  5. 我们能用计算机做什么英语作文,关于计算机工作的英文作文
  6. 贪吃蛇小游戏(代码)
  7. [Office] WPS Excel通过添加宏实现多张表格合并
  8. java计算机毕业设计体育新闻网站源码+系统+数据库+lw文档+mybatis+运行部署
  9. 一起来围观软件测试工程师月薪20K的简历
  10. 最新最全的 Android 开源项目合集