5.3 AOP 프록시 by ys

Spring AOP는 기본적으로 AOP 프록시 용 표준 JDK 동적 프록시를 사용합니다. 이렇게하면 모든 인터페이스 (또는 인터페이스 세트)가 프록시 될 수 있습니다.

프록시란

[대신] 이라는 의미를 가지고 있습니다. 프로토콜에 있어서 대리 응답 등에서 사용하는 개념이라고 할 수 있겠습니다. 보안상의 문제로 직접 통신을 주고 받을 수 없는 사이에서 프록시를 이용해서 중계하는 개념이라고 볼 수 있겠습니다. 이렇게 중계를 기능하는 것을 우리는 [프록시 서버]라고 부릅니다.

프록시 참조 : https://brownbears.tistory.com/191

Spring AOP는 또한 CGLIB 프록시를 사용할 수있다. 이것은 인터페이스가 아닌 클래스를 프록시하는 데 필요합니다. 기본적으로 Business Object가 인터페이스를 구현하지 않으면 CGLIB가 사용됩니다. 클래스가 아닌 인터페이스로 프로그래밍하는 것이 좋으므로 비즈니스 클래스는 일반적으로 하나 이상의 비즈니스 인터페이스를 구현합니다. 인터페이스 상에 선언되지 않은 메소드 나 프록시 된 객체를 메소드에 구체적인 타입으로 전달할 필요가있는 메소드에 조언 할 필요가있는 (희망적으로 드문 경우) CGLIB강제로 사용할 수 있습니다.

CGLIB는 코드 생성 라이브러리로서(Code Generator Library) 런타임에 동적으로 자바 클래스의 프록시를 생성해주는 기능을 제공한다. CGLIB를 사용하면 매우 쉽게 프록시 객체를 생성할 수 있으며, 성능 또한 우수하다. 더불어, 인터페이스가 아닌 클래스에 대해서 동적 프록시를 생성할 수 있기 때문에 다양한 프로젝트에서 널리 사용되고 있다. 예를 들어, Hibernate는 자바빈 객체에 대한 프록시를 생성할 때 CGLIB를 사용하며, Spring은 프록시 기반의 AOP를 구현할 때 CGLIB를 사용하고 있다.

: https://javacan.tistory.com/entry/114

Spring AOP가 프록시 기반이라는 사실을 이해하는 것이 중요하다. 이 구현 세부 사항이 실제로 무엇을 의미하는지에 대한 철저한 조사는 AOP 프록시 이해를 참조하십시오 .

Last updated