프록시 객체란?
프록시 객체는 원본 객체를 대신해서 호출될 객체로, 원본 객체를 감싸서 클라이언트의 요청을 처리하는 중간 단계에 위치합니다. 프록시 객체는 원본 객체와 같은 인터페이스를 구현하고 있어서, 클라이언트는 프록시 객체를 호출하는 것으로 인해 원본 객체의 메소드를 호출하는 것과 같은 효과를 얻을 수 있습니다.
프록시 객체를 사용하는 이유는, 프록시 객체를 통해 원본 객체에 대한 접근을 제어하거나, 부가적인 기능을 제공하기 위해서입니다. 예를 들어, 보안을 위해 원본 객체의 메소드에 접근할 때 권한 검사를 수행하거나, 성능을 개선하기 위해 캐싱을 사용하는 등의 기능을 프록시 객체에서 추가할 수 있습니다. 이렇게 함으로써, 원본 객체의 코드를 변경하지 않고도 클라이언트의 요구사항에 맞추어 기능을 추가하거나 변경할 수 있습니다.
AOP를 구현하기 위해서 프록시 객체를 이용하는 이유?
원본 객체에 대한 코드 수정 없이, 런타임 시점에서 프록시 객체를 통해 부가적인 처리를 추가하기 위해서입니다.
프록시 객체는 원본 객체를 감싸고, 클라이언트가 프록시 객체를 호출할 때 원본 객체의 메소드를 호출하기 전에 추가적인 로직을 수행할 수 있도록 도와줍니다. 이렇게 하면 클라이언트는 원본 객체를 호출하는 것처럼 보이지만, 실제로는 프록시 객체가 원본 객체를 감싸고 부가적인 로직을 수행하게 됩니다.
Spring에서 프록시 객체를 생성하기 위해서는 프록시 객체를 생성할 인터페이스를 구현하는 클래스를 만들고, 이 클래스에 부가적인 처리를 수행하는 Advice를 정의한 뒤, Spring AOP가 프록시 객체를 생성하여 클라이언트에게 제공하게 됩니다. 이렇게 함으로써 원본 객체에 대한 수정 없이 부가적인 처리를 적용할 수 있으며, 코드의 재사용성과 유지보수성을 높일 수 있습니다.
'Programming > SpringBoot' 카테고리의 다른 글
DisplatcherServlet 동작 순서 (0) | 2023.02.24 |
---|---|
[Spring] 빈과 컨테이너 (0) | 2023.02.24 |
[Spring] AOP란? (0) | 2023.02.24 |
Spring 특징 요약 (0) | 2023.02.24 |
@NoArgsConstructor, @RequiredArgsConstructor, @AllArgsConstructor (0) | 2023.02.23 |