본문 바로가기

토비의 스프링

(5)
[토비의 스프링 2권] DispatcherServlet과 MVC 아키텍처 1) MVC 아키텍처와 프론트 컨트롤러 패턴 - 스프링의 웹 기술은 MVC 아키텍처를 근간으로 하고 있다.  MVC는 프레젠테이션 계층의 구성욧소를 정보로 담은 모델(M),  화면 출력 로직을 담은 뷰(V), 그리고 제어 로직을 담은 컨트롤러(C)로 분리하고,  이 세 가지 요소가 서로 협력해서 하나의 웹 요청을 처리하고 응답을 만들어내는 구조다.  - MVC 아키텍처는 보통 프론트 컨트롤러(front controller) 패턴과 함께 사용된다.  프론트 컨트롤러 패턴은 중앙집중형 컨트롤러를   프레젠테이션 계층의 제일 앞에 둬서 서버로 들어오는 모든 요청을 먼저 받아서  처리하게 만든다. - 프론트 컨트롤러는 클라이언트가 보낸 요청을 받아서   공통적인 작업을 먼저 수행한 후에 적절한 세부 컨트롤러로 ..
[토비의 스프링] 다이내믹 프록시 1) 프록시의 문제점과 다이내믹 프록시- 프록시는 기존 코드에 영향을 주지 않으면서 타깃의 기능을 확장하거나  접근 방법을 제어할 수 있는 유용한 방법이다.   그럼에도 불구하고 많은 개발자는 타깃 코드를 직접 고치고 말지 번거롭게 프록시를 만들지는 않겠다고 생각한다.  왜냐하면 프록시를 만드는 일이 상당히 번거롭게 느껴지기 때문이다. - 매번 새로운 클래스를 정의해야 하고 ,  인터페이스의 구현해야 할 메소드는 많으면 모든 메소드를 일일히 구현해서   위임하는 코드를 넣어야 하기 때문이다.  - 단위 테스트를 위해 목이나 스텁을 일일이 클래스로 정의하고  인터페이스의 모의 메소드를 구현하는 일이 불편했던 것과 마찬가지다.  - 그렇다면 목 오브젝트를 만드는 불편함을 목 프레임워크를 사용해 편리하게 바꿨..
[토비의 스프링] 데코레이터 패턴 1) 데코레이터 패턴이란?- 데코레이터 패턴은 타깃에 부가적인 기능을 런타임 시 다이내믹하게 부여해주기 위해  프록시를 사용하는 패턴을 말한다. - 다이내믹하게 기능을 부가한다는 의미는 컴파일 시점,   즉 코드상에서는 어떤 방법과 순서로 프록시와 타깃이 연결되어 사용되는지  정해져 있지 않다는 뜻이다. - 이 패턴의 이름이 데코레이터라고 불리는 이유는 마치 제품이나 케익 등을   여러 겹으로 포장하고 그 위에 장식을 붙이는 것처럼  실제 내용물은 동일하지만 부가적인 효과를 부여해줄 수 있기 때문이다.  - 데코레이터 패턴에서는 프록시가 꼭 한 개로 제한되지 않는다.  프록시가 직접 타깃을 사용하도록 고정시킬 필요도 없다.  이를 위해 데코레이터 패턴에서는 같은 인터페이스를 구현한 타겟과  여러 개의 프..
[토비의 스프링] 다이내믹 프록시와 팩토리 빈 1) 프록시와 프록시 패턴, 데코레이터 패턴- 트랜잭션 경계설정 코드를 비즈니스 로직 코드에서 분리해낼 때  적용했던 기법을 다시 검토해보자.   단순히 확장성을 고려해서 한 가지 기능을 분리한다면  전형적인 전략 패턴을 사용하면 된다.  - 트랜잭션 기능에는 추상화 작업을 통해 이미 전략 패턴이 적용되어 있다.  하지만 전략 패턴으로는 트랜잭션 기능의 구현 내용을 분리해냈을 뿐이다.  트랜잭션을 적용한다는 사실은 코드에 그대로 남아 있다.  - 트랜잭션이라는 기능은 사용자 관리 비즈니스 로직과는 성격이 다르기 때문에  아예 그 적용 사실 자체를 밖으로 분리할 수 있다.   아래 그림과 같이 부가기능 전부를 핵심 코드가 담긴 클래스에서 독립시킬 수 있다.  - 이렇게 분리된 부가기능을 담은 클래스는 중요..
[토비의 스프링] 싱글톤 레지스트리로서의 애플리케이션 컨텍스트 1) 싱글톤 레지스트리란? - 애플리케이션 컨텍스트는 우리가 만들었던 오브젝트 팩토리와 비슷한 방식으로 동작하는 IoC 컨테이너다.  그러면서 동시에 이 애플리케이션 컨텍스트는 싱글톤을 저장하고 관리하는 싱글톤 레지스트리(singleton registry)이기도 하다. - 스프링은 기본적으로 별다른 설정을 하지 않으면 내부에서 생성하는 빈 오브젝트를 모두 싱글톤으로 만든다.  여기서 싱글톤이라는 것은 디자인 패턴에서 나오는 싱글톤 패턴과 비슷한 개념이지만 그 구현 방법은 확연히 다르다.   2) 서버 애플리케이션과 싱글톤- 왜 스프링은 싱글톤으로 빈을 만드는 것일까?   이는 스프링이 주로 적용되는 대상이 자바 엔터프라이즈 기술을 사용하는 서버환경이기 때문이다.  물론 스프링으로 PC 등에서 동작하는 독..