我是办公室里的新手。所以对我没有指导。
我需要AOP
使用log4j
.
AOP
我已经在基本spring MVC
示例中实现了日志记录?
AOP
也没有使用不记录的小样本aspectJ
(刚刚制作Sysout
)?
不知道怎么整合?
有人可以给我一个启动想法吗?
好的答案绝对值得赞赏...
我是办公室里的新手。所以对我没有指导。
我需要AOP
使用log4j
.
AOP
我已经在基本spring MVC
示例中实现了日志记录?
AOP
也没有使用不记录的小样本aspectJ
(刚刚制作Sysout
)?
不知道怎么整合?
有人可以给我一个启动想法吗?
好的答案绝对值得赞赏...
Spring 让我们使用 AOP 变得非常容易。这是一个简单的日志记录示例:
@Aspect
public class MyLogger {
private Logger log = Logger.getLogger(getClass());
@After("execution(* com.example.web.HomeController.*(..))")
public void log(JoinPoint point) {
log.info(point.getSignature().getName() + " called...");
}
}
然后只需配置您的 applicationContext.xml (或等效):
<aop:aspectj-autoproxy>
<aop:include name="myLogger"/>
</aop:aspectj-autoproxy>
<bean id="myLogger" class="com.example.aspect.MyLogger"/>
您会注意到我@After
在方法上方指定的 MyLogger 类。这称为建议,它基本上指定此“日志”方法将在相关方法之后调用。其他选项包括@Before, @Around, @AfterThrowing
.
该表达式"execution(* com.example.web.HomeController.*(..))"
称为切入点表达式并指定我们的目标(在本例中为 HomeController 类的所有方法)。
PSaop
命名空间 ( xmlns:aop="http://www.springframework.org/schema/aop"
) 和模式位置(取决于版本)需要添加到您的 applicationContext.xml 顶部。这是我的设置:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd">
您需要执行几个步骤来集成 Aspectj:
这是一个示例 aop.xml:
<aspectj>
<aspects>
<aspect name="test.MySimpleLoggerAspect" />
</aspects>
<weaver>
<include within="test.myproject.*" />
</weaver>
</aspectj>
如果您已经在使用 Spring,那么最好使用 Spring 来简化您的设置。