1. 개요 1) 테스트 하기 쉬운 코드로 만들기 (영상) 테스트하기 쉬운 코드란? 같은 입력에 항상 같은 결과를 반환하는 코드 외부 상태를 변경하지 않는 코드 테스트하기 쉬운 코드로 만들기 STEP1) 테스트하기 쉬운 코드와 어려운 코드를 분리한다 STEP2) 두 분류의 코드를 최대한 바깥쪽에서 만나게 한다 테스트의 어려움은 안에서 밖으로 전파된다 따라서 테스트하기 쉬운 코드와 어려운 코드를 최대한 바깥쪽에서 만나게 해야 한다 STEP3) 두 분류의 코드가 만나는 지점을 자동 테스트로 검증한다 2) 인수 테스트 리팩터링 기존 인수 테스트의 문제점 테스트의 목적이 다름에도 불구하고 같은 로직을 검증하는 인수 테스트가 생기게 됨 즉, 중복이 발생함 인수 테스트 통합 각 기능 단위로 분산되어 있던 인수 테스트..
본문은 인프런의 [스프링 핵심 원리 - 고급편]를 수강하고 정리한 글입니다. 필요에 따라 생략/수정된 부분이 있을 수 있으며, 내용이 추후 변경될 수 있습니다. 스프링 핵심 원리 - 고급편 1. 쓰레드 로컬 2. 템플릿 메서드 패턴과 콜백 패턴 3. 프록시 패턴과 데코레이터 패턴 4. 동적 프록시 기술 5. 스프링이 지원하는 프록시 6. 빈 후처리기 7. @Aspect AOP 8. 스프링 AOP 개념 9. 스프링 AOP 구현 10. 포인트컷 11. 실무 주의사항 1. AOP 구현1 1) @Aspect를 사용한 AOP 구현 @Slf4j @Aspect public class AspectV1 { @Around("execution(* hello.aop.order..*(..))") //hello.aop.order..
본문은 인프런의 [스프링 핵심 원리 - 고급편]를 수강하고 정리한 글입니다. 필요에 따라 생략/수정된 부분이 있을 수 있으며, 내용이 추후 변경될 수 있습니다. 스프링 핵심 원리 - 고급편 1. 쓰레드 로컬 2. 템플릿 메서드 패턴과 콜백 패턴 3. 프록시 패턴과 데코레이터 패턴 4. 동적 프록시 기술 5. 스프링이 지원하는 프록시 6. 빈 후처리기 7. @Aspect AOP 8. 스프링 AOP 개념 9. 스프링 AOP 구현 10. 포인트컷 11. 실무 주의사항 1. AOP 소개 1) 핵심 기능과 부가 기능 애플리케이션 로직은 크게 핵심 기능과 부가 기능으로 나눌 수 있다. 핵심 기능 해당 객체가 제공하는 고유의 기능 ex) 주문로직, 결제로직 부가 기능 핵심 기능을 보조하기 위해 제공되는 기능 ex) ..
본문은 인프런의 [스프링 핵심 원리 - 고급편]를 수강하고 정리한 글입니다. 필요에 따라 생략/수정된 부분이 있을 수 있으며, 내용이 추후 변경될 수 있습니다. 스프링 핵심 원리 - 고급편 1. 쓰레드 로컬 2. 템플릿 메서드 패턴과 콜백 패턴 3. 프록시 패턴과 데코레이터 패턴 4. 동적 프록시 기술 5. 스프링이 지원하는 프록시 6. 빈 후처리기 7. @Aspect AOP 8. 스프링 AOP 개념 9. 스프링 AOP 구현 10. 포인트컷 11. 실무 주의사항 전 챕터를 통해 자동으로 프록시를 적용하는 과정을 살펴봤다. 포인트컷과 어드바이스로 구성되어 있는 어드바이저를 만들어서 스프링 빈으로 등록 자동 프록시 생성기가 스프링 빈으로 등록된 어드바이저를 조회한다 포인트컷이 매칭되는 경우 프록시 적용 이제..
1. @Bean 애너테이션의 name 속성과 value 속성 @Bean 애너테이션엔 name과 value 속성이 모두 존재한다. 두 속성 모두 빈의 이름을 지정하는 데 사용된다. 동시에 @AliasFor 애너테이션으로 서로를 지정하고 있어 상호 대체가 가능하다. @Target({ElementType.METHOD, ElementType.ANNOTATION_TYPE}) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface Bean { @AliasFor("name") String[] value() default {}; @AliasFor("value") String[] name() default {}; //... } name 속성은 빈의 이름을 명..