春季使用AOP进行伐木?

2022-09-02 09:27:15

我是春天新来的办公室。所以对我来说没有指导。

我需要使用.AOPlog4j

我已经实现了没有基本示例的日志记录?AOPspring MVC

还有小样本在使用没有日志记录(刚刚做了)?AOPaspectJSysout

我不知道如何整合它?

任何人都可以给我一个启动的想法吗?

好的答案绝对值得赞赏...


答案 1

弹簧使我们非常容易使用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...");
    }
}

然后只需配置您的应用程序Context.xml(或等效项):

    <aop:aspectj-autoproxy>
        <aop:include name="myLogger"/>
    </aop:aspectj-autoproxy>

    <bean id="myLogger" class="com.example.aspect.MyLogger"/>

您会注意到在 MyLogger 类中,我在方法的正上方指定了该类。这被称为建议,它基本上指定此“log”方法将在所讨论的方法之后调用。其他选项包括 。@After@Before, @Around, @AfterThrowing

该表达式称为切入点表达式,并指定我们的目标(在本例中为 HomeController 类的所有方法)。"execution(* com.example.web.HomeController.*(..))"

附言:命名空间 () 和架构位置(取决于版本)需要添加到应用程序Context.xml位于顶部。这是我的设置:aopxmlns:aop="http://www.springframework.org/schema/aop"

<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">

答案 2

您需要执行几个步骤来集成Aspectj:

  1. 安装方面J
  2. 将 aop.xml 添加到项目中的 META-INF\aop.xml
  3. 在项目类路径中添加 aspectjrt-x.x.0.jar 和 aspectjweaver-x.x.0.jar
  4. 将 -javaagent:/path to aspectj installation/aspectjweaver-1.7.0.jar 添加到服务器的 JVM。

下面是一个示例 aop.xml:

<aspectj>
 <aspects>
  <aspect name="test.MySimpleLoggerAspect" />
 </aspects>
 <weaver>
  <include within="test.myproject.*" />
 </weaver>     
</aspectj>

如果您已经在使用Spring,那么最好使用Spring来简化您的设置。


推荐