2012-06-14 8 views
0

라이브러리를 개발 중이며 런타임에 내 객체의 메소드 중 일부에 추가 코드를 추가해야합니다. 여기에는 두 가지 점이 있습니다. 우선, 내가 여분의 코드를 추가하고 싶었던 프로그램은 어떤 다른 사람에 의해 전에 쓰여지고, 나는 그것을 편집하고 싶지 않다. 둘째, 제 작품은 메소드를 호출하기 전에 aspect를 추가하는 것과 매우 비슷합니다.런타임시 자바에서 여분의 코드를 추가

인터넷에서 검색하고 읽은 후 aspectj, ASPECTWERKZ 등과 같은 많은 프레임 워크를 찾았지만이 작업을 수행 할 수있었습니다. 예를 들어 aspectj (스프링 컨텍스트에서 사용할 때)와 관련된 문제는 런타임에 직조 작업을 수행 할 API를 제공합니다. ASM, javassist 등의 라이브러리가 있지만 너무 일반적이어서 배우기가 어렵다는 것을 알았습니다. 내 직업은 측면에 더 가까울 수 있습니다.

그래서 무엇을 제안합니까? 거기에 좋은 도서관이 있습니까? 앞에서 언급 한 도서관에 대해 내가 틀린가? 도와주세요!

답변

0

AspectJ를 사용하면 런타임에 클래스가로드 될 때 aspect를 적용 할 수있다. Load-Time Weaving documentation을 참조하십시오. 또는 이전 코드를 변경할 필요가 없으며 컴파일 할 때 aspect를 적용 할 수 있습니다.

+0

로드 타임이 아니라 런타임에 위빙을 할 수 있다고합니다. 여기서 중요한 것은 클래스 로더에 의해 클래스를로드 한 후에 aspect를 추가하고 싶다는 것입니다. – saman

+0

AspectJ LTW는 클래스 로더에 의해로드되기 전에 코드를 계측하는 것과 정확히 동일합니다. 이미로드 된 코드를 계측하고 싶다면 완전히 다른 이야기이지만 질문은 명확하지 않습니다. –

+0

왜 불분명합니까? 그렇게 할 수 없습니까? – saman