2011-01-16 5 views
8

AOP 패턴을 검토 한 후 봄 프로젝트에서 어떻게 그리고 어떻게 사용해야하는지 압도적입니다.봄 프로젝트에서 AOP의 가장 일반적인 용도는 무엇입니까

저는 모든 재무 비즈니스 로직의 감사 로그 시스템으로 사용하고 싶습니다. 통합하기가 쉬운 것 같습니다. 하지만 이걸 네가 듣는 걸 듣고 싶다.

질문은 -이 패턴에 공통적으로 고려해야 할 다른 용도는 무엇입니까? 나는 거기에 이익이있는 한 AOP와 함께 사용되는 현재의 논리를 리팩터링하는 데 신경 쓰지 않을 것이다.

+2

조금 비슷한 질문이 있습니다. "Aspect J는 무엇이 좋은가요?" http://stackoverflow.com/questions/4313789/what-is-aspectj-good-for – Ralph

답변

9

아마도 가장 일반적인 용도는 @Transactional을 사용하는 선언적 트랜잭션 처리입니다.

7

Axel에서 언급 한대로 로깅/감사 및 선언적 트랜잭션 처리 외에도 AOP의 또 다른 용도는 요청 인터셉터라고 할 수 있습니다. 예를 들어, 어떤 앱이 다른 앱이나 어떤 데이터베이스로 어떤 요청을 보내고 있는지 추적 할 수 있도록 서버가 가로 챌 수있는 모든 요청이 가로 챌 필요가 있다고 가정 해 봅시다.

+0

이것은 HandlerInterceptor와 HandlerInterceptorAdoptor를 사용하여 가능합니다. – Prateek

1

AOP를 감사 로깅에 사용하면 AOP를 완벽하게 사용할 수 있습니다. 테스트를 위해이 기능을 끄고 프로덕션에서 요구 사항이 변경되면이를 변경할 수 있습니다.

이 경우 유일한 단점은 SQL을 통해 감사 로그를 수행하려는 경우입니다. 이러한 종류의 감사를 트리거로 직접 DB에 구현하는 것이 더 효과적 일 수 있습니다.

1

@Axel이 말한 것과 약간 다른 대답으로, 모든 데이터 액세스 호출을 자동으로 가로 채고 적절하게 트랜잭션을 적용하기 위해이를 사용하는 것이 놀랍습니다. 나는 내 DAO 패키지에 대한 모든 호출을 구현하기 위해 트랜잭션에서 "get"으로 시작하지 않으며 "get"로 시작하는 메소드에서 수행되는 모든 것은 읽기 전용으로 처리됩니다. 그것은 환상적입니다. 왜냐하면 초기 설정을 제외하고 나는 그것에 대해 걱정할 필요가 없기 때문에 명명 규칙을 따릅니다.

2

보안 문제 (예 : 메소드 액세스 허용/거부)에 대해 AOP를 사용할 수 있습니다. aop의 또 다른 사용법은 애플리케이션 성능을 테스트하는 것입니다.

+1

allow/dissalow 메소드 액세스를 실행하려면 Spring Security가 AOP보다 나은 선택이라고 생각합니다. –

7

가장 일반적인 용도는 응용 프로그램이 교차 절단 문제, 즉 여러 클래스/레이어로 작성 될 논리 또는 코드 조각이있는 곳입니다.

그리고 필요에 따라 다를 수 있습니다. 이들 중 일부 매우 일반적인 예는 수 :

  1. 트랜잭션 관리
  2. 로깅
  3. 예외
  4. 보안 측면을 (당신이 상세한 흔적이 있거나 예외 복구의 일부 계획을 가지고 할 수 있습니다 특히) 처리
  5. 계측 기기

희망 사항.

관련 문제