가능한 AOP 사용 사례는 무엇입니까?
애플리케이션 설계에 AOP를 효과적으로 참여시킬 수 있는 가능한 사례는 무엇인지 그림으로 만들고 싶습니다.제가 지금까지 만난 것은 다음과 같습니다.
- 벌목 관련
- 보안 검사
- 거래 관리
- 레거시 응용 프로그램 수정
또 다른 건 없으세요?
(반드시 스프링의 프록시 기반 AOP일 필요는 없고 JBoss AOP일 필요는 없습니다.)
(관련 질문)
이를 사용하는 두 가지 예를 들어 보겠습니다.
원격 관리를 위해 JMX에 개체를 자동으로 등록합니다.클래스에 주석이 달린 경우
@AutoRegister
주석, 우리는 해당 클래스의 새로운 인스턴스화를 감시하고 자동으로 JMX에 등록하는 측면이 있습니다.감사 기록(골드 표준 AOP 사용 사례).다소 거칠지만 일반적인 접근 방식은 감사 가능한 작업을 나타내는 메서드에 주석을 다는 것입니다.Spring Security와 같은 기능을 결합하면 다음과 같은 이점을 얻을 수 있습니다.
- 사용자가 누구인지
- 그들이 어떤 방법을 호출하고 있는지
- 그들이 제공하는 데이터는 무엇입니까?
- 메서드가 호출된 시간
- 호출의 성공 여부(예: 예외가 발생한 경우)
- 예외 처리: 끔찍한 시도 목록(예: 캐치, 캐치, 캐치 등)을 반복할 필요가 없습니다. 또한 예외 처리는 일관성이 보장됩니다.
- 성능 모니터링:측면을 사용하는 것은 방해가 되지 않으므로 매우 유용하며, 사후에 수행할 수 있으며 더 이상 필요하지 않을 때 끌 수 있습니다.
와우... 10년 전 - AOP를 위한 것이 많지 않았습니다...여기 몇 가지 더 있습니다.
- 생성자에 액세스할 수 없는 개체(예: jpa 엔티티)를 사용자 지정할 수 있습니다.
- 보안 규칙 구현(보안에 따르면 사용자는 이 메서드를 호출할 수 없습니다. AOP는 이를 구현할 수 있습니다.)
- 트랜잭션 관리자(시작, 커밋, 롤백)
- 캐싱 - 메서드의 결과를 캐시하고 다시 호출하지 않습니다.
적용 가능성 측면에서 AOP의 적용 범위를 보려면 Aspect-Orientated-Software-Development-Use-Cases라는 책을 읽어보시기를 정말 권장합니다.이 책은 AOP를 사용하여 기능 및 비기능 요구사항의 사용 사례를 상세히 설명합니다.그런 다음 로깅, 추적, 보안 등보다 더 많은 요구 사항에 사용할 수 있음을 알게 될 것입니다.
메서드가 상태 비저장인 경우 메서드 수준 캐싱(즉, 동일한 매개 변수 값으로 반복적으로 호출할 때 동일한 값을 반환함).DAO 방법의 경우 데이터베이스 적중을 방지하므로 더욱 효과적입니다.
- 읽기/쓰기 잠금.동일한 스니펫을 복제하는 대신 읽기 잠금 또는 전용 잠금이 필요한 메서드를 정의하기 위해 측면을 사용했습니다.
소프트웨어 라이센스 관리를 위해 사용합니다. 즉, 컴퓨터에 특정 라이센스가 설치된 경우에만 소프트웨어가 실행되도록 합니다.보안 검사의 한 형태이기 때문에 나열된 용도와 크게 다르지 않습니다.
여기에 실제 구현을 설명하는 블로그 항목을 게시했습니다.
당신이 나열한 모든 것 외에 AOP를 효과적으로 사용하는 한 가지 방법은 검증일 수 있습니다.사용자 입력 또는 비즈니스 개체의 유효성을 검사합니다.
꼭 봐야 할 관련 기사들.
다음과 같은 측면도 권장합니다.
- 비동기 메서드 호출
- 모니터링
Spring 및 tcServer(개발자)를 사용하면 @Component 주석을 사용하여 모든 Spring 콩을 쉽게 모니터링할 수 있습니다.사용된 시간, 예외를 포함한 입력 및 반환 데이터를 볼 수 있습니다.
속성 변경됨 및 유사한 오류를 알립니다.
기본적으로 이렇게 보이는 코드가 있는 곳이면 어디든 - 측면을 사용하면 완료됩니다.
코드 계약의 런타임 검사입니다.에 대한 코드 계약.NET 사용 AOP:
런타임 확인.우리의 바이너리 리라이터는 프로그램 실행의 일부로 확인되는 계약을 주입하여 프로그램을 수정합니다.
AOP를 달성하기 위해 AspectJ를 사용합니다.위에서 언급한 사용 사례 이외의 사용 사례는 다음과 같습니다.
- 메서드 호출에 대한 액세스를 소수의 클래스로만 제한합니다.
- 선택한 메서드/클래스/필드에 자동으로 주석을 달 수 있습니다.
언급URL : https://stackoverflow.com/questions/2197051/what-are-the-possible-aop-use-cases
'programing' 카테고리의 다른 글
테스트 NG를 사용한 스프링 종속성 주입 (0) | 2023.08.15 |
---|---|
jQuery - 클래스의 요소에서 속성 값 목록을 가져옵니다. (0) | 2023.08.15 |
Apache POI를 사용하여 .xls와 .xlsx 파일을 모두 읽을 수 있는 방법이 있습니까? (0) | 2023.08.15 |
Swift의 포괄적인 스위치 설명에 대한 Noop (0) | 2023.08.15 |
jQuery가 gzip/deflate를 사용하도록 설정된 URL에 대해 AJAX를 강제로 호출할 수 있습니까? (0) | 2023.08.15 |