320x100
# 스프링 삼각형
# POJO(Plain old java object) 순수 자바 객체
순수 자바 객체 말 그대로 옛날 형식의 간단한 자바 객체를 뜻하는 말로서, JavaEE 등 프레임워크를 점점 많이 사용하면서 무거워진 객체에 반발하여 생긴 개념입니다. 2000년 9월부터 사용하기 시작한 용어로 이후,
POJO는 "특정 자바나 프레임워크에 제약되지 않는 자바 오브젝트를 지칭하는 개념"으로 사용되었습니다.
POJO의 장점으로는
깔끔한 코드 생산이 가능하고 , 자동화 테스트에 유리하며 ,
객체 지향설계를 자유롭게 적용할 수 있다는 것입니다.
POJO의 조건으로는
특정 규약에 종속되지 않아야 하고
둘째는 특정 환경에 종속되지 않아야합니다.
마지막은 자바 오브젝트와 같은 객체지향적 원리에 충실해야 한다는 것입니다..
예를 들어 특정 기술을 이용하기 위하여 프레임워크를 사용하기 위해 이를 직접 사용하는 경우,
POJO가 아니게 됩니다. 이는 특정 표준 인터페이스를 통하여 이루어져야 합니다.
그리고 반복적인 템플릿 구조와 테스트하기 힘든 구조, 확장이나 재활용이 어려움이 있으면 안 됩니다.
객체지향적 원리: 추상화, 캡슐화, 일반화, 다형성
객체 지향 원리 설명 링크
#AOP(Aspect Oriented Programming) 관점 지향(중심) 프로그래밍
OOP(Object-Oriented Programming) 객체 중심 프로그래밍의 기술적 한계를 극복하기 위한 등장한 AOP
관점 중심 프로그래밍은 로직을 관점(Aspect)을 핵심적인 것과 부가적인 것으로 나누어서 그 기준을 따라 각각 모듈화 하는 것입니다. 모듈화는 공통된 로직이나 기능을 하나의 단위로 묶는 것을 뜻합니다.
비즈니스 로직에서 핵심 로직을 실행시키기 위해 행해지는 DB 연결, 로깅 , 파일 입출력 등이 그 예입니다.
AOP에서 각 관점을 기준으로 로직을 모듈화 하는 것은 코드들을
부분적으로 나누어서 모듈화 하겠다는 것인데
이때 소스 코드상 다른 부분에서 계속 반복해서 쓰는 코드들을
나누는 것을 크로스커팅(Crosscutting)라 합니다.
AOP의 목적은 크로스커팅된 관심사(일명 횡단관심사)를 모듈화하고
핵심적인 비즈니스 로직에서 분리하여 재사용하는 것입니다.
#PSA(Portable Service Abstraction) 이식 가능한 서비스 추상화
스프링은 수많은 PSA로 구성되어 있다. PSA를 이식가능한 서비스 추상화라고 이야기하면 너무 어려운 개념이고, 쉽게 이야기해서 스프링에서 동작 가능하고, POJO의 원칙을 지킨 아주 잘 만들어진 인터페이스를 일컫는 말입니다. 이는 환경과 세부기술의 변화에 관계없이 일관된 방식으로 기술에 접근가능합니다.
그래서 PSA가 적용된 코드는 자신의 코드가 바뀌지 않고, 다른 기술로 쉽게 변경할 수 있어 확장성이 좋고, 기술에 특화된 코드들을 의미합니다.
주요 스프링의 PSA에선 Spring Web MVC, Spring Transaction, Spring Cache등이 있습니다.
#IOC(Inversion of Control) 제어의 역전 /
DI(Dependency Injection) 의존성주입
IOC,제어의 역전은 "메소드나 객체의 호출작업은 개발자가 아닌 외부에서 결정되는 것"을 의미합니다.
IOC는 이미 폭넓게 사용되고 있으며 스프링에서는 DI를 통하여 이것이 이루어지고 있습니다.
DL(Dependency Lookup)은 의존성 검색으로 컨테이너가 애플리케이션을 운용할 때 필요한 객체를 생성하고 클라이언트는 컨테이너가 생성한 객체를 검색(Lookup)하여 사용하는 방식이다. 하지만 이 방식은 그리 사용되지는 않습니다.
DI, 의존성 주입은 객체를 직접 생성하는 게 아니라 외부에서 생성한 후에 주입하는 방식을 이야기합니다.
예를 들어 객체를 생성할때 자바에서는 new를 사용하여 직접 생성하였지만, 스프링에서는
의존성주입을 통해 객체를 간접적으로 생성하도록 하게 합니다.
이를 통하여 모듈 간의 결합도가 낮아지므로 유연성도 높아지게 됩니다.
DI의 장점으로는 코드의 단순화와 종속인 코드의 최소화, 편리한 어플리케이션의 유지보수가 있습니다.
DI에 대한 더 쉬운 설명은 이곳에 가면 보실수 있습니다.
의존성 주입에 대한 링크
출처:
https://justgo-developer.tistory.com/168
https://ko.wikipedia.org/wiki/Plain_Old_Java_Object
https://doing7.tistory.com/81, https://jobc.tistory.com/30
https://engkimbs.tistory.com/746
https://m.blog.naver.com/PostView.nhn?blogId=ljh0326s&logNo=221395815870&proxyReferer=https:%2F%2Fwww.google.com%2F
https://doublesprogramming.tistory.com/214
https://jeonyoungho.github.io/posts/Spring-AOP/
반응형
'Coding story > go Spring,JSP' 카테고리의 다른 글
#Spring(1) - STS 설치 및 MVC프로젝트 생성 (0) | 2022.01.27 |
---|---|
(개념정리) Spring boot,JPA/MYBATIS/하이버네이트,VUE (0) | 2022.01.26 |
dbcp와 jdbc #2 - 사용과 비교 (0) | 2022.01.22 |
dbcp와 jdbc #1 - 개념과 설치 (0) | 2022.01.22 |
Session (0) | 2022.01.18 |
최근댓글