스프링 부트 프로젝트를 하면서 에러 로그에서 프록시 객체라는 단어를 많이 보았습니다.

그래서 프록시 객체에 대해 알아보자 합니다.

 

프록시 객체란?

프록시 객체는 원본 객체를 대신해서 호출될 객체로, 원본 객체를 감싸서 클라이언트의 요청을 처리하는 중간 단계에 위치합니다.

프록시 객체는 원본 객체와 같은 인터페이스를 구현하고 있어서, 클라이언트는 프록시 객체를 호출하는 것으로 인해 원본 객체의 메소드를 호출하는 것과 같은 효과를 얻을 수 있습니다.

 

프록시 객체를 사용하는 이유는, 프록시 객체를 통해 원본 객체에 대한 접근을 제어하거나, 부가적인 기능을 제공하기 위해서입니다.

예를 들어, 보안을 위해 원본 객체의 메소드에 접근할 때 권한 검사를 수행하거나, 성능을 개선하기 위해 캐싱을 사용하는 등의 기능을 프록시 객체에서 추가할 수 있습니다.

이렇게 함으로써, 원본 객체의 코드를 변경하지 않고도 클라이언트의 요구사항에 맞추어 기능을 추가하거나 변경할 수 있습니다.

 

이 프록시 개념은 AOP에서 사용됩니다.

 

AOP란?

AOP는 Aspect Oriented Programming의 약자로 관점 지향 프로그래밍이라고 합니다.

관점 지향은 어떠한 로직을 핵심적인 관점, 부가적인 관점으로 나누어서 보고 그 관점을 기준으로 각각 모듈화하겠다는 것입니다.

예를 들어 핵심적인 관점은 비지니스 로직이 될 수 있고, 부가적인 관점은 로깅이 될 수 있습니다.

 

위의 그림에서 Class A, B, C는 핵심적인 관점이고, 노랑, 파랑, 빨강은 부가적인 관점입니다.

여기서 노랑, 파랑, 빨강 부분을 모듈화하여 재사용하는 것이 AOP의 취지입니다.

'채워가는 지식 > Spring Boot' 카테고리의 다른 글

JPA란?  (0) 2024.04.17
커넥션 풀이란?  (0) 2024.04.17
영속성 컨텍스트란?  (0) 2024.04.03
Bean에 대하여...  (0) 2024.02.16

+ Recent posts