Book/토비의 스프링

Book/토비의 스프링

[토비의 스프링] 다이내믹 프록시를 이해해보자

토비 AOP까지 읽는게 목표였고 해당 파트인 6장을 읽고 있는데 다이내믹 프록시가 매우 매우 어렵다..책 내용이 아니라 혼자 이해한 내용을 정리한거니 혹시라도 틀린 부분을 알려주시면 감사하겠습니다. ㅜㅜ 다이내믹 프록시를 사용하는 이유프록시 디자인 패턴의 치명적인 단점을 보완하기 위해 사용한다. 프록시 디자인 패턴은 원본 클래스 수만큼 프록시 클래스를 하나하나 만들어줘야 한다. 프록시 적용 대상 객체가 1억 개면 프록시 객체도 1억 개 만들어줘야 한다. 이러한 코드의 복잡도 한계를 해결하기 위해 사용하는 것이 다이내믹 프록시다. 다이내믹 프록시는 컴파일 시점이 아닌 런타임 시점에 자바 가상 머신이 지원해 준다. 애플리케이션 실행 도중 java.lang.reflect.Proxy 패키지에서 제공해 주는 AP..

Book/토비의 스프링

[토비의 스프링] 4장 예외

내용을 정리한 글은 워낙 많아서 깨달음을 얻은 부분 위주로 정리했다. 예외를 처리할 때 반드시 지켜야 할 핵심 원칙 모든 예외는 적절하게 복구되든지, 아니면 작업을 중단시키고 개발자에게 분명하게 통보되어야 한다. 예외를 무시하거나 출력하고 넘어가는 코드는 만들지 말자. Exception과 체크 예외 체크 예외가 발생할 수 있는 메서드를 사용할 경우 반드시 예외를 처리하는 코드를 함께 작성해야 한다. 사용할 메서드가 체크 예외를 던진다면 이를 catch 문으로 잡든지, 아니면 다시 throws를 정의해서 메서드 밖으로 던져야 한다. 그렇지 않으면 컴파일 에러가 발생한다. RuntimeException과 언체크/런타임 예외 런타임 예외는 catch 문으로 잡거나 throws로 선언하지 않아도 된다.

Book/토비의 스프링

[토비의 스프링] 3장 템플릿

내용을 정리한 글은 워낙 많아서 깨달음을 얻은 부분 위주로 정리했다. 전략패턴 특징 오브젝트를 아예 둘로 분리하고 클래스 레벨에서는 인터페이스를 통해서만 의존하도록 만드는 패턴 GoF의 디자인 패턴 책에서는 전략 패턴을 다음과 같이 정의한다. 동일 계열의 알고리즘군을 정의하고 → 전략 구현체로 정의하고 각각의 알고리즘을 캡슐화하여 → 인터페이스로 추상화 이들을 상호 교환이 가능하도록 만든다. → 합성(composition)으로 구성 알고리즘을 사용하는 클라이언트와 상관없이 독립적으로 → 컨텍스트 객체 수정 없이 알고리즘을 다양하게 변경할 수 있게 한다. → 메서드를 통해 전략 객체를 실시간으로 변경함으로써 전략 변경 쉽게 말하면 객체지향의 기법인 SOLID 원칙과 합성, 다형성, 캡슐화 등 OOP 기술들..

Book/토비의 스프링

[토비의 스프링] 2장 테스트

내용을 정리한 글은 워낙 많아서 깨달음을 얻은 부분 위주로 정리했다. 스프링으로 개발을 하면서 테스트를 만들지 않는다면 이는 스프링이 지닌 가치의 절반을 포기하는 셈이다. 테스트란 내가 예상하고 의도했던 대로 코드가 정확히 동작하는지 확인해서, 만든 코드를 확신하게 해주는 작업이다. 코드의 결함을 제거하기 위해 디버깅을 거치게 되고, 최종적으로 테스트가 성공하면 모든 결함이 제거되었다는 것을 알 수 있다. 단위 테스트 테스트의 관심이 다르다면 테스트할 대상을 분리하고 집중해서 접근해야 한다. 단위는 작을수록 좋다. 단, DB상태가 매번 달라진다면 단위 테스트로서의 가치가 없어진다. 단위 테스트를 하는 진짜 목적 : 에러 원인을 빨리 찾기 위해서이다. 인터페이스를 활용하여 DI를 적용해야 하는 이유 소프트..

Book/토비의 스프링

[토비의 스프링] 1장 오브젝트와 의존관계

내용을 정리한 글은 워낙 많아서 깨달음을 얻은 부분 위주로 정리했다. 개발자가 객체를 설계할 때 가장 염두에 둬야 할 사항은 바로 미래의 변화를 어떻게 대비할 것인가이다. 변경이 일어날 때 필요한 작업을 최소화하고, 그 변경이 다른 곳에 문제를 일으키지 않게 하기 위해서는 설계를 할 때 분리와 확장을 고려해야 한다. 변화가 한 번에 한 가지 관심에 집중돼서 일어난다면, 우리가 준비해야 할 일은 한 가지 관심이 한 군데에 집중되게 하는 것이다. 하나의 관심사가 방만하게 중복되어 있고, 여기저기 흩어져 있어서 다른 관심의 대상과 얽혀 있으면, 변경이 일어날 때마다 엄청난 고통을 일으키는 원인이 된다. UserDao는 Connection 인터페이스 타입의 오브젝트라는 것 외에는 관심을 두지 않는다. → 그저 ..

yo0oni
'Book/토비의 스프링' 카테고리의 글 목록