728x90

자바라 쓰고 Springframework를 공부한다.

Spring의 주요 3가지 컨셉은 아래와 같습니다.

1) IOC : 제어의 역전 / 의존성 주입
2) AOP : 관심의 분리
3) PSA : 일관성 있는 추상화

그럼 실제로 어떻게 사용될까?

IOC : 제어의 역전 / 의존성 주입 사용 예제

Bean은 IoC 컨테이너 안에 등록된 객체들을 의미 합니다.
모든 클래스의 객체가 Bean으로 등록되지 않습니다. @Repository, @Component, @Service, @Bean 등의 어노테이션을 통해서 Bean으로 등록 가능합니다.

사용 예로는 @Autowired 어노테이션을 이용해서 Bean을 주입할 수 있습니다.
Bean 주입이 주는 이점은, 객체의 관리를 스프링 컨테이너가 하기에 개발자가 언제 빈을 생성하고 소멸시킬지 신경쓰지 않아도 됩니다.

AOP : 관심의 분리 예제

가장 큰 예로 @Transctional을 이야기 할 수 있습니다.
connection에 대하여 rollback, commit등을 신경쓰지 않고 처리 하게 됩니다.
결국 트렌젝션 처리는 위임하고 구현 기능에 집중하는 코드를 작성하면 됩니다.

PSA : 일관성 있는 추상화

Service Abstraction으로 제공되는 기술을 다른 기술 스택으로 간편하게 바꿀 수 있는 확장성을 갖고 있는 것이 Portable Service Abstraction. 줄여서 PSA라고 합니다.
예로는 서블릿을 직접 사용하는 것이 아니라, Controller의 @GetMapping이나 @PostMapping을 통해 특정 url로 요청이 들어왔을 때, 해당 블록이 요청을 처리하도록 구현 되어 있습니다.
이렇게 추상화 계층을 사용해 어떤 기술을 내부에 숨기고 개발자에게 편의성을 제공하는 것을 Service Abstraction이라고 합니다.

스프링은 MVC라는 추상화 기법을 사용. Spring Web MVC를 사용하면 서블릿을 직접 구현할 필요가 없습니다.

참고 자료

Posted by lahuman

댓글을 달아 주세요