본문 바로가기
Programming/spring

Spring Triangle

by Teshub 2021. 1. 17.

Spring Triangle

1. 제어 역행 IOC

- 애플리케이션의 느슨한 결합을 만든다

- 컨트롤의 제어권이 사용자가 아니라 프레임워크에 있어 필요에 따라 스프링에서 사용자코드를 호출한다

└ 의존성 주입 DI

- 계층이나 서비스들 간에 의존성이 존재할 경우 프레임워크가 서로 연결시켜준다

의존성 주입엔 3가지 방법이 있다 

1. 필드 주입

2. 생성자 주입

3. setter 주입

@Autowired 의존성을 주입할때 쓰는 어노테이션이다

(스프링 4.3이상부터는 생성자로 의존성주입시 @Autowired을 생략할수있다)

 

2. 관점 지향 프로그래밍 AOP

- 어떤 로직을 기준으로 핵심적인 관점, 부가적인 관점으로 나누어서 보고 그 관점을 기준으로 각각 모듈화한다

(여기서 모듈화란 어떤 공통된 로직이나 기능을 하나의 단위로 묶는 것을 말한다)

핵심적인 관점이란 우리가 적용하고자 하는 핵심 비즈니스로직이 된다. 또한 부가적인 관점은 핵심 로직을 실행하기 위해서 행해지는 db연결, 로깅, 파일입출력을 예로 들수있다.(자주쓰는건 트랜잭션 정도로만 알고있다)

 

-프록시 패턴 기반의 AOP 구현체, 프록시 객체를 쓰는 이유는 접근 제어 및 부가기능을 추가하기 위해서임

-스프링 빈에만 AOP를 적용 가능

-모든 AOP 기능을 제공하는 것이 아닌 스프링 IoC와 연동하여 엔터프라이즈 애플리케이션에서 가장 흔한 문제(중복코드, 프록시 클래스 작성의 번거로움, 객체들 간 관계 복잡도 증가 ...)에 대한 해결책을 지원하는 것이 목적

 

3. PSA(Portable Service Abstraction)

- 추상화 계층을 이용하여 어떤 기술을 내부에 숨기고 개발자에게 편의성을 제공해주는 것을 Service Abstraction이라 한다. 더하여 Service Abstraction으로 제공되는 기술을 다른 기술 스택으로 간편하게 바꿀 수 있는 확장성을 갖고 있는 것이 Portable Service Abstraction이다.

- 예로 들면 Spring의 @Controller 애노테이션이 붙어있는 클래스에서 @GetMapping,@PostMapping 같은 @RequestMapping애노테이션을 사용해서 요청을 맵핑한다. 실제로는 서블릿 기반으로 코드가 동작하지만 서블릿 기술은 추상화계층에 의해 숨겨진 것이다

728x90

'Programming > spring' 카테고리의 다른 글

스프링 MVC의 개념  (0) 2021.01.16

댓글