스프링 핵심 원리 - 고급편ThreadLocal은 해당 쓰레드만 접근할 수 있는 특별한 저장소를 말한다. 쓰레드 로컬을 사용하면 각 쓰레드마다 별도의 내부 저장소를 만든다. 따라서 같은 인스턴스의 쓰레드 로컬 필드에 접근해도 문제 없다.예제 코드주의 해당 쓰레드가 쓰레
우리가 작성하는 소스는 핵심 기능과 부가 기능으로 분류 할 수 있다. 핵심 기능 : 해당 객체가 제공하는 고유기능 부가 기능 : 핵심 기능을 보조하기 위해 제공되는 기능이다. 예를 들어 로그 추적 로직, 트랜잭션 기능으로 이러한 기능은 단독으로 사용되지 않고, 핵심 기
이 포스팅은 인프런 : 스프링 핵심 원리 - 고급편 을 참고하여 작성되었습니다. 이전에 학습했던 패턴으로 로그추적기를 도입하려면 원본 코드를 수정해야 한다. 원본 코드를 수정하지 않고 로그추적기를 도입하려면 프록시의 개념을 이해해야 한다. 프록시, 프록시 패턴, 데
일반적인 스프링 빈 등록 @Bean 이나 컴포넌트 스캔으로 스프링 빈을 등록하면, 스프링은 대상 객체를 생성하고 스프링 컨테이너 내부의 빈 저장소에 등록한다. 빈 후처리기(BeanPostProcessor) 스프링이 빈 저장소에 등록할 목적으로 생성한 객체를 빈 저장
스프링 애플리케이션에 프록시를 적용하려면 포인트컷과 어드바이스로 구성되어있는 어드바이저를 만들어서 스프링 빈으로 등록하면 된다.나머지는 자동 프록시 생성기가 모두 자동으로 처리해준다.스프링은 @Aspect 애노테이션으로 매우 편리하게 포인트컷과 어드바이스로 구성되어있는
애플리케이션 로직에는 핵심 기능과 부가 기능이 있는데,핵심 기능은 해당 객체가 제공하는 고유의 기능이며,부가 기능은 핵심 기능을 보조하기 위해 제공하는 기능이다.부가 기능은 여러 클래스에 걸쳐 함께 사용된다. 이러한 부가기능은 횡단 관심사(cross-cutting co
@Pointcut@Pointcut에 포인트컷 표현식을 사용한다.메서드 이름과 파라미터를 합쳐서 포인트컷 시그니처(signature)라한다.메서드 반환 타입은 void여야 하며 코드 내용은 비워둠포인트 컷을 공용으로 사용하기 위해 별도의 외부 클래스로 만들어도 된다. 참
포인트컷 지시자 포인트컷 표현식은 execution같은 포인트컷 지시자(Pointcut Defignator)로 시작한다. 줄여서 PCD라고 한다. 포인트컷 지시자의 종류 execution : 메소드 실행 조인 포인트를 매칭한다. 스프링 AOP에서 가장 많이 사용하고 기