Регистрация в AOP в spring?

Я новичок в spring в своем офисе. Поэтому для меня нет никакого руководства.

Мне нужно выполнить регистрацию с помощью AOP с помощью log4j.

Я выполнил ведение журнала без AOP в базовом spring MVC примере?

Также сделал небольшой образец в AOP с помощью aspectJ без ведения журнала (только что сделал Sysout)?

Я не знаю, как его интегрировать?

Может кто-нибудь, пожалуйста, дать мне идею запуска?

Хорошие ответы определенно оценены...

Ответы

Ответ 1

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

В классе MyLogger вы заметите, что я указал @After прямо над методом. Это называется советом, и в основном это указывает, что этот метод "журнала" будет называться после рассматриваемого метода. Другие варианты включают @Before, @Around, @AfterThrowing.

Выражение "execution(* com.example.web.HomeController.*(..))" называется выражением pointcut и указывает, на что мы нацеливаемся (в данном случае все методы класса HomeController).

P.S. Пространство имен aop (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">

Ответ 2

Вам нужно выполнить несколько шагов для интеграции Aspectj,

  • Установите AspectJ,   http://www.cs.utep.edu/cheon/cs3360/project/proj1/installing-aspectj.txt
  • Добавьте свой aop.xml в META-INF\aop.xml в свой проект
  • Добавить aspectjrt-x.x.0.jar и aspectjweaver-x.x.0.jar в свой путь к проекту
  • Добавить -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 для упрощения настройки, вот хороший пример, http://forum.springsource.org/showthread.php?61551-Bean-Factory-is-not-set-for-BeanConfigurerSupport