복붙노트

[SPRING] 봄에 AOP 로깅?

SPRING

봄에 AOP 로깅?

내 사무실에서 봄이 새거야. 그래서 나에게는 지침이 없다.

log4j를 사용하여 AOP로 로깅을 구현해야합니다.

기본 스프링 MVC 예제에서 AOP없이 로깅을 구현 했습니까?

또한 로깅하지 않고 aspectJ를 사용하여 AOP의 작은 샘플을 만들었습니다 (그냥 Sysout을 만들었습니까?).

나는 그것을 어떻게 통합 할 것인지 모른다.

어느 누구도 저에게 시작 아이디어를 주시겠습니까?

좋은 답변은 분명히 높이 평가됩니다 ...

해결법

  1. ==============================

    1.Spring은 AOP를 사용하기가 정말 쉽습니다. 다음은 간단한 로깅 예제입니다.

    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를 지정했음을 알 수 있습니다. 이것을 advice라고 부르며 기본적으로이 'log'메소드가 문제의 메소드 다음에 호출되도록 지정합니다. 다른 옵션에는 @Before, @Around, @AfterThrowing이 있습니다.

    "execution (* com.example.web.HomeController. * (..))"표현식은 포인트 컷 식 (pointcut expression)이라고 불리며 우리가 목표로하는 대상 (이 경우 HomeController 클래스의 모든 메서드)을 지정합니다.

    추신 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. ==============================

    2.Aspectj를 통합하려면 몇 가지 단계를 수행해야한다.

    Aspectj를 통합하려면 몇 가지 단계를 수행해야한다.

    다음은 샘플 aop.xml입니다.

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

    이미 스프링을 사용하고 있다면 스프링을 사용하여 설정을 단순화하는 것이 더 좋습니다. 여기에 좋은 예가있다. http://forum.springsource.org/showthread.php?61551-Bean-Factory-is-not-set-for-BeanConfigurerSupport

  3. from https://stackoverflow.com/questions/15746676/logging-with-aop-in-spring by cc-by-sa and MIT license