목록Programing & Coding (86)
S E P H ' S
지난 PSA에서 나왔던 Spring MVC에 대해 자세히 알아보는 포스트이다. 기초적인 개념으로 Servlet에 대한 개념을 알아야 Spring MVC에 대한 이해가 가능하다. 먼저 Servlet에 대한 이해를 하고 Spring MVC에 대한 내용을 다루는 것으로 하겠다. Servlet Servlet은 클라이언트 요청을 처리하고 그 결과를 다시 클라이언트에게 전송하는 Servlet 클래스의 구현 규칙을 지킨 자바 프로그램이다. 이전의 웹 프로그램들은 클라이언트 요청에 대한 응답으로 만들어진 페이지를 넘겨줬지만 현재는 동적인 페이지를 가공하기 위해서 웹 서버가 다른 곳에 도움을 요청한 후 가공된 페이지를 넘겨 주게 된다. 이때 Servlet을 사용하게 되면 웹 페이지를 동적으로 생성하여 클라이언트에게 반환..
PSA (Portable Service Abstraction) 일관된 서비스 추상화 PSA는 환경의 변화와 관계없이 일관된 방식의 기술로의 접근 환경을 제공하는 추상화 구조를 말한다. 이는 POJO 원칙을 철저히 따른 Spring의 기능으로 Spring에서 동작할 수 있는 Library들은 POJO 원칙을 지키도록 PSA 형태의 추상화가 되어있음을 의미한다. PSA가 적용된 코드라면 코드가 변경되지 않고도 다른 기술로 간편하게 바꿀 수 있는 확장성을 지니게 된다. 쉽게 말해 개발자가 개발시에는 내부적으로 어떻게 동작하는지는 살펴볼 일이 거의 없다. 내부적으로 작동하는 기능들을 숨기고, 추상화하여 개발자에게 제공하기 때문이다. Spring은 Spring Web MVC, Spring Transaction, ..
Spring AOP Spring AOP에 대한 이해를 위해 지난 포스트 에서는 AOP를 달성하기 위해 사용한 디자인 패턴을 알아보면서 어떤 식으로 개선을 해왔는지 알아봤다. 하지만 결국 마지막 정리 부분에서 말했듯이 프록시 패턴이나 데코레이터 패턴을 사용하더라도 부가 기능을 도입하고자 하는 클래스의 개수만큼 필요한 클래스를 만들어야 한다는 문제점이 있었다. 이를 동적 프록시 적용 (JDK 동적 프록시, CGLIB, ProxyFactory) 으로 해결할 수 있다고 했는데 이를 위해서는 Spring AOP 용어 이해가 필요하다. AOP 란? AOP는 로직을 볼때, 핵심적인 관점과 부가적인 관점을 나누어 보고 그 관점을 기준으로 모듈화를 한다고 했었다. 다음 그림을 보자. 그림과 같이 클래스 A, B, C에서..
Spring AOP 지난 포스트에서는 Spring의 핵심 3대 요소에 대해 알아봤다. 이번 포스트에서는 AOP 에 대해서 더 깊이 있게 다뤄볼 것이다. Spring에서 AOP 를 적용하는데에 있어 생각보다 단순하지는 않기 때문이다. 많이 복잡할 것이지만 차근차근 하나씩 개념을 짚어나가보면 좋을 것 같다. AOP에 대한 기초 개념은 지난 포스트에서 다뤘기 때문에 더 깊이 있는 내용들을 위주로 다뤄보겠다. 크게 AOP에 사용되는 디자인 패턴과 용어 및 적용 방식 등과 같이 두 가지로 챕터를 나눠서 정리할 것이다. AOP 와 프록시 패턴, 데코레이터 패턴 AOP는 로직을 볼때, 핵심적인 관점과 부가적인 관점을 나누어 보고 그 관점을 기준으로 모듈화를 한다고 했었다. 다음 그림을 보자. 그림과 같이 클래스 A,..