본문 바로가기
Web/Spring

스프링의 삼각형 IoC/DI ,AOP,PSA,POJO 간단 개념정리

by 952_hi 2022. 5. 2.

1. POJO

Plain Old Java Object

 

POJO 특정 환경이나 기술에 종속적이지 않은 객체지향 원리에 충실한 자바객체

테스트하기 용이하며 객체지향 설계를 자유롭게 적용할 수 있다.

특정 프레임워크나 기술에 의존적이지 않은 자바 객체

특정 기술에 종속적이지 않기 때문에 생상성, 이식성 향상

 

Plain -> component interface를 상속받지 않는 특징

ex) 서블릿+JSP 웹에서 컨트롤러를 하나 만들다라고 가정했을때

request나 response를 사용하기 위해서는 HttpServlet과 같은 부모로 부터 상속을 받아야 사용가능해서

특정 기술에 종속적이게 됨

 

Old -> EJB 이전의 java class를 의미

 

2. PSA

Portable Service Abstraction

 

환경과 세부기술의 변경과 관계없이 일관된 방식으로 기술에 접근할 수 있게 해주는 설계의 원칙
트랜잭션의 추상화 OXM추상화 데이터 액세스의 Exception 변환기능 등 기술적인 복잡함을 추상화를 통해
Low Level의 기술 구현 부분과 기술을 사용하는 인터페이스로 분리

 

3. LoC

LoC(제어의반전)/DI (LOC의 구현방법중 하나)
DI는 유연하게 확장 가능한 객체를 만들어 두고 객체간의 의존관계는 외부에서 다이나믹하게 설정.

LoC는 스프링이 갖고있는 핵심적인 기능
자바의 객체 생성 및 의존관계에 있어 모든 제어권은 개발자에게 있다
서블릿과 EJB가 나타나면서 제어권이 서블릿컨테이너나 EJB컨테이너에게 넘어 갔다.
서블릿 EJB에 대한 제어권을 제외한 나머지 객체 제어권은 개발자 담당

LOC
객체 제어방식
기존 필요한 위치에서 개발자가 필요한 객체 생성 로직 구현
LOC 객체 생성을 Container에게 위임하여 처리

사용 시 장점 
객체 간의 결합도를 떨어뜨릴 수 있음

결합도가 높으면 해당 클래스 유지보수 시 클래스와 결합된 다른 클래스도 같이 유지보수 되어야할 가능성이 높아짐

 

4. AOP

AOP 관점지향 프로그래밍
관심사의 분리를 통해서 소프트웨어의 모듈성 향상
공통 모듈을 여러 코드에 쉽게 적용가능

관점을 기준으로 프로그래밍하는 기법
핵심관심 사항과 전체에 적용되는 공통관심 사항을 기준으로 프로그래밍 함으로써 공통 모듈을 여러 코드에 쉽게 적용
스프링은 자체적으로 프록시 기반의 AOP를 지원하므로 트랜잭션이나 로깅 보안과 같이 여러 모듈에서 공통으로 
필요로 하지만 실제 모듈의 핵심이 아닌 기능들을 분리하여 각 모듈에 적용이 가능하다.

 

댓글