BackEnd/Spring51 [Spring] 빈 후처리기 - 2 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 5. 스프링이 제공하는 빈 후처리기1 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 스프링이 제공하는 자동 후처리기를 사용하기 위해서는, 다음 의존성을 꼭 추가해야줘야 한다. implementation 'org.springframework.boot:spring-boot-starter-aop' 라이브러리를 추가하면 aspectjweaver 라는 aspectJ 관련 라이브러리를 등록하고, 스프링 부트가 AOP 관련 클래스를 자동으로 스프링 빈에 등록한다. ▶ (AnnotationAwareAspectJ)AutoProxyCreator 스프링 부트 자동 설정으로 .. BackEnd/Spring 2022. 8. 16. [Spring] 빈 후처리기 - 1 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 1. 빈 후처리기 - 소개 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 @Bean 이나 컴포넌트 스캔으로 스프링 빈을 등록하면, 스프링은 대상 객체를 생성하고 스프링 컨테이너 내부의 빈 저장소에 등록한다. 그리고 이후에는 스프링 컨테이너를 통해 등록한 스프링 빈을 조회해서 사용하면 된다. ▶ 빈 후처리기 - BeanPostProcessor 스프링이 빈 저장소에 등록할 목적으로 생성한 객체를 빈 저장소에 등록하기 직전에 조작하고 싶다면 빈 후처리기를 사용하면 된다. 1) 생성: 스프링 빈 대상이 되는 객체를 생성한다. (@Bean , 컴포넌트 스캔 모두 .. BackEnd/Spring 2022. 8. 15. [Spring] 스프링이 지원하는 프록시 - 2 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 이번 글 에서는 지난번 ProxyFactory에 이어서 포인트컷, 어드바이스, 어드바이저 에 대하여 학습해보자! 4. 포인트컷, 어드바이스, 어드바이저 - 소개 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 스프링 AOP를 공부했다면 다음과 같은 단어를 들어보았을 것이다. 포인트컷( Pointcut ) 어디에 부가 기능을 적용할지, 말지를 판단하는 필터링 로직이다. 주로 클래스와 메서드 이름으로 필터링 한다. 이름 그대로 어떤 포인트(Point)에 기능을 적용할지 하지 않을지 잘라서(cut) 구분하는 것이다. 어드바이스( Advice ) 이전에 본 것 처.. BackEnd/Spring 2022. 8. 14. [Spring] 스프링이 지원하는 프록시 - 1 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 이번 시간에는 프록시 팩토리 에 대하여 학습해보자! 1. 프록시 팩토리 - 소개 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 몇가지 질문을 통해 프록시 팩토리의 특징에 대하여 알아보자! 1-1) 인터페이스가 있는 경우에는 JDK 동적 프록시를 적용하고, 그렇지 않은 경우에는 CGLIB을 적용하려면 어떻게 해야할까? 스프링은 동적 프록시를 통합해서 편리하게 만들어주는 프록시 팩토리( ProxyFactory )라는 기능을 제공한다. 이전에는 상황에 따라서 JDK 동적 프록시를 사용하거나, 또는 CGLIB를 사용해야 했다. 하지만 Spring의 프록시 팩토리.. BackEnd/Spring 2022. 8. 14. [Spring] 동적 프록시 기술 - JDK, CGLIB 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 1. 리플랙션 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 지난번 글 에서 Proxy의 단점으로 대상 클래스 수 만큼 로그 추적을 위한 프록시 클래스를 만들어야 한다는 점을 언급했었다. 다행이 Java는 JDK 동적 프록시 기술이나 CGLIB 같은 프록시 생성 오픈소스 기술을 활용하면 프록시 객체를 동적으로 만들어낼 수 있다. 프록시를 적용할 코드를 하나만 만들어두고 동적 프록시 기술을 사용해서 프록시 객체를 찍어내면 된다! JDK 동적 프록시의 이해를 위해서는 우선 리플렉션에 대하여 학습해야한다. 리플렉션 기술을 사용하면 클래스나 메서드의 메타정보를 .. BackEnd/Spring 2022. 8. 13. [Spring] 인터페이스, 구체 클래스 기반 프록시 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 1. 인터페이스 기반 프록시 - 적용 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 프록시를 사용하면 기존 코드를 전혀 수정하지 않고 로그 추적 기능을 도입할 수 있다! 로그 추적 기능을 도입해보자! 잠시 V1 버전의 클래스 의존 관계를 살펴보면 다음과 같다. Controller , Service , Repository 각각 인터페이스에 맞는 프록시 구현체를 추가하면, 의존 관계는 다음과 같다. Repository의 의존 관계 그림 부분은 생략하였다. 런타임 의존 관계는 다음과 같아진다. 그리고 애플리케이션 실행 시점에 프록시를 사용하도록 의존 관계를 설.. BackEnd/Spring 2022. 8. 10. [Spring] 데코레이터 패턴 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 1. 데코레이터 패턴 - 예제 코드1 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 간단하게 예제 코드를 만들어보자! 이전 Proxy 패턴과 거의 유사하다. 또한 코드가 매우 간단하여 설명은 생략한다. ▶ Component public interface Component { String operation(); } ▶ RealComponent @Slf4j public class RealComponent implements Component { @Override public String operation() { log.info("RealComponent 실행.. BackEnd/Spring 2022. 8. 10. [Spring] 프록시 패턴 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 1. 프록시 패턴, 데코레이터 패턴 - 소개 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 프록시는 아무 객체나 프록시가 될수있는것은 아니다. 객체에서 프록시가 되려면, 클라이언트는 서버에게 요청을 한 것인지, 프록시에게 요청을 한 것인지 조차 몰라야 한다. 쉽게 이야기해서 서버와 프록시는 같은 인터페이스를 사용해야 한다. 그리고 클라이언트가 사용하는 서버 객체를 프록시 객체로 변경해도 클라이언트 코드를 변경하지 않고 동작할 수 있어야 한다. 클래스 의존관계를 보면 클라이언트는 서버 인터페이스( ServerInterface )에만 의존한다. 그리고 서버와.. BackEnd/Spring 2022. 8. 10. [Spring] 프록시 패턴과 데코레이터 패턴 예제 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 이번 시간에는 우선 예제 프로젝트부터 만들어보자! 디자인 패턴에 대한 글을 다음 게시물 부터 시작할 예정이다. 1. 예제 프로젝트 만들기 v1 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 이번 글 에서는 다음 글에서 설명할 데코레이터, 프록시 패턴을 위한 준비 예제 작업 시간이다. 설명보다는 단순 코드만 많은 점 양해 부탁 드립니다. 예제는 크게 3가지 상황으로 만든다. v1 - 인터페이스와 구현 클래스 - 스프링 빈으로 수동 등록 v2 - 인터페이스 없는 구체 클래스 - 스프링 빈으로 수동 등록 v3 - 컴포넌트 스캔으로 스프링 빈 자동 등록 V1 -.. BackEnd/Spring 2022. 8. 9. [Spring] 템플릿 콜백 패턴 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 1. 템플릿 콜백 패턴 - 시작 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 지난 번 전략패턴 글에서 ContextV2 는 변하지 않는 템플릿 역할을 한다. 그리고 변하는 부분은 파라미터로 넘어온 Strategy에 해당된다. 이렇게 다른 코드의 인수로서 넘겨주는 실행 가능한 코드를 콜백(callback)이라 한다. 콜백 정의 프로그래밍에서 콜백(callback) 또는 콜애프터 함수(call-after function)는 다른 코드의 인수로서 넘겨주는 실행 가능한 코드를 말한다. 콜백을 넘겨받는 코드는 이 콜백을 필요에 따라 즉시 실행할 수도 있고, 아니.. BackEnd/Spring 2022. 8. 7. [Spring] 전략 패턴 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 1. 전략 패턴 - 예제1 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 우선 다음과 같은 코드가 있다고 해보자. @Slf4j public class ContextV1Test { @Test void strategyV0() { logic1(); logic2(); } private void logic1() { long startTime = System.currentTimeMillis(); //비즈니스 로직 실행 log.info("비즈니스 로직1 실행"); //비즈니스 로직 종료 long endTime = System.currentTimeMillis(); lo.. BackEnd/Spring 2022. 8. 7. [Spring] 템플릿 메서드 패턴 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 1. 템플릿 메서드 패턴 - 예제1 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 이번시간은 TemplateMethod Pattern을 적용할 예제를 만들어보자. @Slf4j public class TemplateMethodTest { @Test void templateMethodV0() { logic1(); logic2(); } private void logic1() { long startTime = System.currentTimeMillis(); //비즈니스 로직 실행 log.info("비즈니스 로직1 실행"); //비즈니스 로직 종료 long en.. BackEnd/Spring 2022. 8. 6. 이전 1 2 3 4 5 다음