AOP 面向切面的编程

要明确下面几个概念

切面(Aspect):用于组织多个增强处理Advice,Advice放在切面中定义;

增强处理(Advice):切入点处执行增强处理

连接点(Joinpoint):程序执行过程中的点,如方法调用,异常抛出

切入点(Pointcut):可以插入增强处理的连接点


步骤:

1. Beans.xml中配置,启动@AspectJ支持

<context:component-scan base-package="com.jason.bookparadise.aspect"><context:include-filter type="annotation" expression="org.aspectj.lang.annotation.Aspect"/>
</context:component-scan>

<aop:aspectj-autoproxy></aop:aspectj-autoproxy>

2. 配置切面类,使用@Aspect

@Aspect
public class TestAspect {@Before("execution(* com.jason.bookparadise.service.TestService.*(..))")public void testBefore(){System.out.println("Test AOP Before Run");}}

3. 定义增强处理

@Before,@After,@Around ("execution(* org.crazyit.app.service.impl.*.*(..)")

@AfterReturning (returning="rvt", pointcut="execution(* org.crazyit.app.service.impl.*.*(..)")

@AfterThrowing (throwing="ex", pointcut="* org.crazyit.app.service.impl.*.*.(..)")

可以通过JoinPoint来获取参数

4. 定义切入点

可以通过切面类对切入点重命名

@Aspect
public class SystemArchitecture{@Pointcut("execution(* org.crazyit.app.service.impl.*.*(..))")public void myPoint(){}
}

调用时

pointcut="SystemArchitecture.myPointcut()"

实际应用中可以把所有的切点集中写到一个类中。


Log4j配置

Log分为root log和自定义log两种,Root log log4j.rootLogger=stdout, logfile, errorlogfile, 自定义log edit_delete_log.

关于Log文件的配置博文 http://www.cnblogs.com/ITtangtang/p/3926665.html 讲的很详细,可以参照。

private static Log logger = LogFactory.getLog("edit_delete_log");

logger.info(userid + " delete Book" + bookid + " " + rvt);
# Configure logging for testing: optionally with log file
log4j.rootLogger=stdout, logfile, errorlogfilelog4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Append = true
log4j.appender.stdout.Threshold = WARN
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%nlog4j.appender.logfile=org.apache.log4j.FileAppender
log4j.appender.logfile.File=F:/BookParadise/Logs/root.log
log4j.appender.logfile.Append = true
log4j.appender.logfile.Threshold = WARN
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%nlog4j.appender.errorlogfile=org.apache.log4j.FileAppender
log4j.appender.errorlogfile.File=F:/BookParadise/Logs/runerror.log
log4j.appender.errorlogfile.Append = true
log4j.appender.errorlogfile.Threshold = ERROR
log4j.appender.errorlogfile.layout=org.apache.log4j.PatternLayout
log4j.appender.errorlogfile.layout.ConversionPattern=%d %p [%c] - %m%nlog4j.logger.edit_delete_log = DEBUG, loglevel
log4j.appender.loglevel=org.apache.log4j.FileAppender
log4j.appender.loglevel.File=F:/BookParadise/Logs/edit_delete.log
log4j.appender.loglevel.layout=org.apache.log4j.PatternLayout
log4j.appender.loglevel.layout.ConversionPattern=%d %p [%c] - %m%n

转载于:https://www.cnblogs.com/xdlaoliu/p/6869540.html

通过AOP引入Log4j相关推荐

  1. 在spring引入log4j

    在spring中使用log4j 引入log4j软件包 配置log4j属性 加载log4j配置文件 默认加载 手动加载 使用logger 本文的整体代码结构是在已经引入spring基本应用的前提下,在s ...

  2. springMVC,aop管理log4j,把当前session信息和错误信息打印到日志

    ((((其实还是不太理解aop的正真意义但是这样可以实现想要的了,我的感觉是执行一个方法时首先通过filter( 这个fiter可以不配置,之所以要他是因为在aop切入的方法session消失了,我们 ...

  3. Spring AOP源码解析(三)—— AOP引入(续)

    目录 AbstractAspectJAdvisorFactory AspectJAnnotation ReflectiveAspectJAdvisorFactory getAdvisors getAd ...

  4. Spring AOP源码解析(二)—— AOP引入

    目录 配置类 AopAutoConfiguration AspectJAutoProxyingConfiguration ClassProxyingConfiguration @EnableAspec ...

  5. 【spring】AOP引入的使用与源码分析

    通知是对目标对象方法的增强,而引入可以动态为目标对象实现新的接口,实现对类的增强. 引入的使用 目标类 public class DogService {public void hi() {Syste ...

  6. 《Spring揭秘》读书笔记 2:Spring AOP

    7 一起来看AOP 2009年8月,<一起来看流星雨>开播. 2009年9月,<Spring揭秘>出版. 7.1 AOP核心概念 AOP AOP全称为Aspect-Orient ...

  7. 使用Log4j进行日志操作(牛小浩)不错的

    使用Log4j进行日志操作   一.Log4j简介   (1)概述 Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台.文件.GUI组件.甚至是 ...

  8. log4j的使用方法

    首先是引入log4j的jar包,在src目录下创建log4j.properties文件 package com.coderdream.log4j; import org.apache.log4j.Lo ...

  9. SSM框架下结合 log4j、slf4j打印日志

    首先加入log4j和slf4j的jar包 <!-- 日志处理 <!-- slf4j日志包--><dependency><groupId>org.slf4j&l ...

最新文章

  1. DrawerLayout
  2. 大咖分享会 | 百度首次揭秘如何构建用户画像与移动统计
  3. 二元运算符的运算符重载
  4. linux 离线 svn插件安装,Eclipse离线安装svn插件
  5. 一颗明亮的火球从天空划过
  6. 配置linux普通用户无密码执行sudo命令
  7. PCRE demo【转】
  8. 前端怎么做接口签名验证 -baijiahao_阿里一面:如何保证API接口数据安全?
  9. vue+IOS9页面白屏
  10. 点分十进制IP转换为32位二进制IP,带合法性校验
  11. matlab 一维 平滑,MATLAB中数据平滑处理
  12. rtk采点后如何导入cad_CAD图片导入:如何对JPG图片进行描图
  13. 什么是 Web 应用防火墙(WAF)?
  14. 微信小程序从零开始开发步骤(三)
  15. SOF文件生成JIC文件
  16. eclipse32位和64位的区别
  17. Example 3, 4 of variadic templates
  18. SQLServer截取字符串常用函数
  19. wi ndows自带截图工具,不想装截图工具?这里有 5 个 Windows 自带截图小技巧
  20. k8s==安装仪表盘,用仪表盘部署nginx

热门文章

  1. python函数解读_通过7个Python函数来解释区块链
  2. 从linux使用sz命令下载大于4g的文件到windows
  3. 当你使用R安装包出现rdb is corrupt问题的时候
  4. R语言生信作图代码集合大全
  5. samba 开通_LINUX开启SAMBA服务
  6. SpringMVC教程
  7. static 结构体_C++基础-static
  8. 本博客体系系列篇(一)
  9. Windows10下VB6.0开发——利用PictureBox控件实现数据点实时绘图
  10. android二级菜单ui,巧用PopupMenu实现NavigationView的二级子菜单