전체 글
6장. AOP2
6.4 스프링의 프록시 팩토리 빈 6.4.1 ProxyFactoryBean 실습 코드 링크 : https://github.com/vvshinevv/toby-spring/tree/feature/6.4.1 스프링은 서비스 추상화를 프록시 기술에도 동일하게 적용한다. 따라서 스프링은 일관된 방법으로 프록시를 만들 수 있게 도와주는 추상 레이어를 제공한다. 스프링의 ProxyFactoryBean은 프록시를 생성해서 빈 오브제트로 등록하게 해주는 팩토리 빈이다. 기존에 만들었던 TxProxyFactoryBean과 달리, ProxyFactoryBean은 순수하게 프록시를 생성하는 작업만을 담당하고 프록시를 통해 제공해줄 부가기능은 별도의 빈에 둘 수 있다. ProxyFactoryBean이 생성하는 프록시에서 사용할..
6장. AOP1
서비스 추상화와 더블어 스프링 3대 기반기술의 하나인 AOP에 대해서 알아보자. OOP를 대체하려고 하는 것처럼 보이는 AOP라는 이름 뒤에 감춰진, 그 필연적인 등장배경과 스프링이 그것을 도입한 이유, 그 적용을 통해 얻을 수 있는 장점이 무엇인지에 대한 충분한 이해를 해보자. 6.1 트랜잭션 코드의 분리 6.1.1 메소드 분리 실습 코드 링크 :https://github.com/vvshinevv/toby-spring/tree/feature/6.1.1 메소드로 비지니스 로직을 담당하는 코드를 독립시켜보자. 적어도 순수하게 사용자 레벨 업그레이드를 담당하는 비지니스 로직 코드만 메소드에 담겨 있으니 이해하기도 편하고, 수정하기에도 부담이 없다. 6.1.2 DI를 이용한 클래스 분리 실습 코드 링크 : h..
5장. 서비스 추상화
DAO에 트랜잭션을 적용해보면서 스프링이 어떻게 성격이 비슷한 여러 종류의 기술을 추상화하고 이를 일관된 방법으로 사용할 수 있도록 지원하는지 살펴보자. 5.1 사용자 레벨 관리 기능 추가 5.1.1 필드 추가 실습 코드 링크 : https://github.com/vvshinevv/toby-spring/tree/feature/5.1.1 5.1.2 사용자 수정 기능 추가 실습 코드 링크 : https://github.com/vvshinevv/toby-spring/tree/feature/5.1.2 5.1.3 UserService.upgradeLevels() 실습 코드 링크 : https://github.com/vvshinevv/toby-spring/tree/feature/5.1.3 로직을 보면 로그인 횟수와..
자바 클래스패스
이전부터 스프링으로 웹 서비스를 개발할 때 테스트 코드를 짜는 것에 대한 중요성은 일찍히 알고 있었다. 테스트 코드를 만들다 보면 항상 봉착하는 문제가 있었는데 내가 설정한 빈 파일 혹은 JSON과 같은 파일을 어떻게 찾아야 하는지였다. 이럴 땐 항상 이미 성공한 다른 코드를 복붙하기에 바빴다. 그러면서 클래스 패스가 무엇인지 정확하게 모른 채 넘어갔었는데 이번 기회에 부셔보자. 1. 클래스 패스(classpath) 클래스 패스는 쉽게 말해 JVM이 프로그램을 실행할 때 클래스를 찾기 위한 기준이 되는 경로라고 생각하면 간단하다. 만약 클래스 패스를 설정하지 않았다면 디폴트는 현재 경로를 바라보게 된다. 우리가 많이 사용하는 intellij IDE도 클래스 패스를 설정하지 않으면 기본적으로 현재 경로에서..