많은 프레임 워크 (Struts, Spring, Hibernate, AspectJ)는 바이트 코드 조작을 내부적으로 사용한다고 들었다. 바이트 코드 조작을 사용해야하는 이유는 무엇입니까? 각 특정 프레임 워크에 대한 유스 케이스를 적어도 가진 답변을 기대하고 있습니다.인기있는 프레임 워크가 바이트 코드 조작을 내부적으로 사용하는 이유는 무엇입니까?
2
A
답변
10
이 프레임 워크는 클래스의 바이트 코드를 조작하여 해당 기능에 대한 지원을 클래스에 추가 할 수 있도록합니다. 예를 들어, Hibernate는 클래스의 getter/setter를 코딩하여 엔티티가 업데이트되었을 때 (더티가 될 때) 추적하고 /하거나 지연로드를 수행하는 코드가 포함 된 하위 엔티티의 프록시를 반환하도록 지원할 수 있습니다.
Aspectj는 요청한 애스펙트를 추가하기 위해 바이트 코드를 조작합니다. 예를 들어 클래스 호출시 기록 할 클래스의 모든 메소드에 조언을 추가하려는 경우 aspectj는 각 메소드에 해당 로깅을 수행하는 바이트 코드를 추가 할 수 있습니다.
예 저는 당신의 요지를 얻었지만 스프링 프레임 워크와 스트럿츠 2가 프레임 워크에서 바이트 코드 조작을 사용하는 방법에 대해 설명했습니다. –