Javassist proxyFactory는 메소드 인터셉터를 사용하여 런타임에 프록시를 작성할 수 있습니다. 하지만 class 파일을 수정하여 클래스에 메소드 인터셉터를 정적으로 추가하는 방법은 무엇입니까?바이트 코드 도구 : 클래스에 메소드 인터셉터 추가 (프록시가 아님)
예를 들어, 클래스 Foo에는 100 개의 메소드가 있으며, Foo 인스턴스에서 메소드를 호출하기 전에 Foo 인스턴스가 초기화되었는지 확인해야합니다.
public class Foo {
public void methodA() {
...
}
public void methodB() {
...
}
public void methodC() {
...
}
....
}
이러한 메소드 인터셉터를 추가하기 위해 클래스 파일을 수정하는 방법은 무엇입니까? 한 가지 방법은 각 메소드의 시작 부분에 코드를 추가하는 것입니다. 더 좋은 방법이 있습니까?
cglib와 같은 다른 바이트 코드 도구는 어떻습니까?