proxy

핵심 기능과 부가 기능 애플리케이션 로직은 크게 핵심 기능과 부가 기능으로 나눌 수 있다. 핵심 기능이라 함은 객체가 가지고 있는 비즈니스로직으로 볼 수 있다. 만약 계산을 해주는 Calculator 라는 객체가 있다고 가정하면, Calcualtor의 핵심 기능은 사칙연산 등을 의미한다. 부가 기능은 핵심 기능을 보조하기 위한 기능이다. 단독으로 사용되지 않으며 핵심기능과 함께 사용된다. 예를 들면 메소드 실행 속도를 나타내는 로그, 트랜잭션 기능, 보안 기능 등등이 된다. 핵심 기능에 부가 기능을 추가해보자 @Slf4j public class Calcualtor { public int add(int x, int y) { // 핵심 기능 return x + y; } public int sub(int x,..
2022.09.30 - [프로그래밍 노트/SPRING] - [Spring] 프록시팩토리_2 (feat. Advisor) 2022.09.28 - [프로그래밍 노트/SPRING] - [Spring] 프록시팩토리_1 (feat. Advice) 프록시 팩토리는 스프링에서 제공해주는 강력한 기술이지만, 부가기능이 필요할때 마다 프록시팩토리를 사용하여 프록시 객체를 만들기에는 한계가 있다. if, 100개의 프록시 빈을 생성해야한다면? .. 설정파일에 빈들을 하나씩 추가해줘야 한다. 빈 후처리기를 활용하면 컴포넌트 스캔을 통하여 일괄로 빈을 등록할 수 있게 되는데 일단 빈 후처리기에 대해 알아보자. 빈 후처리 - BeanPostProcessor 스프링은 bean 으로 등록될 대상 객체를 찾아서(@Bean 또는 컴포..
2022.09.27 - [프로그래밍 노트/SPRING] - [Spring] 동적 프록시 기술(feat. 리플렉션) 바로 직전 포스팅에서 동적 프록시 기술에 대해 알아보았는데, 이런 의문점을 가질 수 있다. 인터페이스가 있는 클래스는 Jdk Dynmic Proxy를 사용하고, 존재하지 않는 경우에는 CGLib 를 사용해야하니 InvocationHandler 와 MethodInterceptor 를 모두 구현해놔야하는 것인가? 물론.. 그래도 되지만 스프링에서는 프록시 생성을 추상화하여 프록시 팩토리(ProxyFactory)라는 것을 제공해준다. 우리는 타겟 객체가 인터페이스를 구현했는지 안했는지 알필요가 없다. 프록시 팩토리에서 인터페이스가 있으면 자동으로 Jdk Dynamic Proxy를 사용하고, 구체 ..
이 글의 내용은 김영한님의 스프링 핵심 원리 - 고급편 내용을 정리하였다. AOP들어가기 전 프록시에 대한 정리 프록시의 주요 기능 접근 제어 권한에 따른 접근 차단 캐싱 지연 로딩 부가 기능 추가 원래 서버가 제공하는 기능에 더해서 부가 기능을 수행 요청 값이나, 응답 값을 중간에 변형한다. 실행시간을 측정해서 추가 로그를 남긴다. 클라이언트와 서버라고 하면 보통 서버 컴퓨터를 생각하게 된다. 하지만 클라이언트와 서버의 개념은 상당히 넓게 사용된다. 클라이언트는 의뢰인, 서버는 서비스나 상품을 제공하는 사람이나 물건을 뜻한다. 이 개념을 객체에 도입하면, 요청하는 객체는 클라이언트가 되고, 요청을 처리하는 객체는 서버가 된다. 클라이언트가 요청한 결과를 서버에 직접 요청한는 것이 아니라 어떤 대리자(P..
문제점 프로젝트에서 nginx를 사용하기로 하여, nginx에 .vue 파일을 위치시키고 그 뒤에 springboot를 위치시켰다. nginx는 reverse proxy 역할을 하며, 클라이언트의 모든 요청을 받는다. 요청 URI가 /api로 시작하면 뒷단 springboot(proxy_pass 이용)로 요청을 보내고, /api로 시작하지 않는다면 vue router에게 URI에 해당하는 vue 페이지를 리턴하도록 한다. nginx.conf server{ location ^~/api{ proxy_pass http://127.0.0.1:8080; } } 이런식으로 구성을 하여 프로젝트를 진행하였는데, 문제가 발생했다. 바로 springboot 에서 request.getRemoteAddress(); 를 호출..
스프링 AOP 특징 프록시 기반의 AOP 구현체 스프링 빈에만 AOP를 적용할 수 있다. 모든 AOP 기능을 제공하는 것이 목적이 아니라, 스프링 IoC와 연동하여 엔터프라이즈애플리케이션에서 가장 흔한 문제에 대한 해결책을 제공하는 것이 목적 프록시 패턴 왜? (기존 코드 변경 없이) 접근 제어 또는 부가 기능 추가 기존 코드를 건드리지 않고 성능을 측정해 보자. (프록시 패턴으로) EventService (Subject) public interface EventService { void createEvent(); void publishEvent(); } SimpleEventService (Real Subject) @Service public class SimpleEventService implement..
프록시란? 프록시(Proxy)란 '대리'라는 의미를 갖고 있으며, 서버와 서버사이의 중계기역할을 한다. 보안상의 이유로 직접 통신할 수 없는 두 점사이에서 대리로 통신을 수행하는 기능을 가리켜 '프록시'라고 하며, 프록시서버로 부른다. Forward 프록시 프록시 서버를 '클라이언트 호스트들과 원격 리소스 사이'에 위치시키는 방법 프록시 서버는 클라이언트가 요청한 리소스를 원격 리소스에서 가져와서 클아이언트에게 돌려주는 역할을 수행한다. 만약 캐시가 있다면, 다음 요청시에는 캐시된 데이터를 제공해준다. 이 방식은 대역폭을 감소시킬 수 있다는 것과 접근 정책 구현에 있어 다루기 쉬우면서 비용도 저렴하다는 장점이 있어 기업환경에서 많이 사용한다. ex) 기업 사내망에서 특정 url에는 접근을 못하게 하는 방..
깡냉쓰
'proxy' 태그의 글 목록