6장 AOP - 6.5 스프링 AOP
6.5 스프링 AOP 지금까지 해온 작업은 비즈니스 로직에 반복적으로 등장하는 트랜잭션 코드를 깔끔하고 효과적으로 분리해내는 것이다. 6.5.1 자동 프록시 설정 부가기능을 적용하는 과정에서 있었던 문제는 대부분 해소되었다. 타깃 코드는 여전히 깔끔한 채로 남아있고, 부가기...
6.5 스프링 AOP 지금까지 해온 작업은 비즈니스 로직에 반복적으로 등장하는 트랜잭션 코드를 깔끔하고 효과적으로 분리해내는 것이다. 6.5.1 자동 프록시 설정 부가기능을 적용하는 과정에서 있었던 문제는 대부분 해소되었다. 타깃 코드는 여전히 깔끔한 채로 남아있고, 부가기...
6.4 스프링의 프록시 팩토리 빈 6.4.1 ProxyFactoryBean 자바에는 JDK 에서 제공해주는 다이내믹 프록시 외에도 프록시를 만들 수 있는 다양한 기술이 존재한다. 따라서 스프링은 일관된 방법으로 프록시를 만들 수 있게 도와주는 추상 레이어를 제공한다. 스프링...
6.3 다이내믹 프록시와 팩토리 빈 6.3.1 프록시와 프록시 패턴, 데코레이터 패턴 단순히 확장성을 고려해서 한 가지 기능을 분리한다면 전형적인 전략 패턴을 사용하면 된다. 전략 패턴을 통해 트랜잭션 기능의 구현을 분리해냈지만 트랜잭션 코드는 그대로 남아있었다. 트랜잭션이...
6.2 고립된 단위 테스트 가장 편하고 좋은 테스트 방법은 가능한 한 작은 단위로 쪼개서 테스트하는 것이다. 6.2.1 복잡한 의존관계 속의 테스트 UserService 의 구현 클래스가 동작하려면 세 가지 타입의 의존 오브젝트가 필요하다. 원래 UserServiceTest...
AOP 는 Ioc/DI, 서비스 추상화와 더불어 스프링의 3대 기반기술의 하나다. 스프링에 적용된 가장 인기 있는 AOP 의 적용 대상은 바로 선언적 트랜잭션 기능이다. 6.1 트랜잭션 코드의 분리 비즈니스 로직이 주인이어야 할 메소드 안에 이름도 길고 무시무시하게 생긴 트랜...
5.4 메일 서비스 추상화 5.4.1 JavaMail을 이용한 메일 발송 기능 레벨이 업그레이드 되는 사용자에게 안내 메일을 발송하는 기능을 만들어보겠습니다. 먼저 email 필드를 추가하고 테스트를 해 봅니다. User 테이블에 email 필드를 추가 User 클...
5.3 서비스 추상화와 단일 책임 원칙 수직, 수평 계층구조와 의존관계 추상화 기법을 이용하면 특정 기술환경에 종속되지 않는 코드를 만들 수 있습니다. UserService, UserDao 를 관심사에 따라 어플리케이션 비즈니스 로직을 분리한 것을 수평적인 분리라고 합니다. ...
5.2 트랜잭션 서비스 추상화 사용자 레벨 조정 작업 중간에 문제가 발생하면 그때까지 진행되었던 모든 변경 작업을 모두 취소시키도록 하는 기능을 추가합니다. 5.2.1 모 아니면 도 작업 수행 중 예외가 던져지는 상황을 의도적으로 만들어서 테스트해 봅니다. 테스트용 User...
5.1 사용자 레벨 관리 기능 추가 UserDao 에 비즈니스 로직을 추가해 봅니다. 사용자 관리 기능에서 구현해야하는 비즈니스 로직은 다음과 같습니다. 사용자의 레벨은 BASIC, SILVER, GOLD 세 가지 중 하나다. 사용자가 처음 가입하면 BASIC 레벨이...
RSS 리더 Feedly https://feedly.com/ 피들리는 RSS(Rich Site Summary) 리더이다. RSS 리더는 블로그를 구독할 수 있는 서비스라고 보면 된다. RSS 리더를 이용해서 여러 개의 블로그를 구독해두면 새 글이 올라올 때 알림이나 표시를 ...