일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- @AllArgsConstructor
- 프로그래머스
- entity
- 깃허브
- 상속
- DTO
- @NoArgsConstructor
- 기본생성자
- Python
- 자바
- 에러
- 코드업
- 부스트코스
- CRUD
- @builder
- 캡슐화
- github
- 파이썬
- HashSet
- stringbuffer
- Codeup
- SQL
- java
- html tag
- git
- 부트캠프
- 알고리즘
- lv1
- HTML
- 브랜치
- Today
- Total
잉?
[Spring] 스프링의 3대 요소(IoC/DI, AOP, PSA) 알아보기 본문
스프링의 3대 요소에 무엇이 있는지 간단하게 살펴보고자 한다.
스프링에서는 크게 3가지 핵심 프로그래밍 모델을 지원한다.
1. IoC/DI (제어의 역전 / 의존성 주입)
IoC(Inversion of Control, 제어의 역전)
역전은 형세가 뒤집힘, 거꾸로 회전함이라는 뜻을 가지고 있다.
객체에 대한 제어권이 바뀌었다(뒤집혔다)는 것을 의미한다.
밑의 첨부해 둔 게시글에서 아주 쉽게 예시를 들어준다.
차를 몰고 가는 것은 내가 차를 제어하는 것이다.
직접 차를 운전하는 대신 운전기사를 고용한다면 차를 직접 운전할 필요가 없고 본업에 집중할 수 있다.
이것을 제어의 역전이라 한다.
DI(Dependency Injection, 의존성 주입)
IoC와 비슷한 의미르 사용되지만 의존성 주입은 IoC가 구현된 한 가지이다.
각 클래스간의 의존관계를 컨테이너가 자동으로 연결해 주는 것을 말하는데
필요한 객체를 직접 생성하는 것이 아니라 외부로부터 객체를 받아 사용한다.
이를 통해 객체간의 결합도가 낮아지고 재활용성이 높아진다.
의존성 주입에는 3가지 방법이 있다.
- 생성자 주입(@Controller)
- 필드 주입(필드에 @Autowired 붙이는 방법)
- 수정자 주입(setter 메서드에 @Autowired 붙이는 방법)
2. AOP(Aspect Oriented Programming, 관점 지향 프로그래밍)
애플리케이션에 공통적으로 나타나는 기능(관심사)들을 모듈화(분리)하는 프로그래밍으로
객체지향 프로그래밍을 돕는 기술이다.
기능들을 모듈화하여 객체지향스럽게 개발할 수 있도록 도와준다.
3. PSA(서비스 추상화)
환경의 변화와 상관없이 일관된 방식의 기술로 접근 환경을 제공하는 추상화 구조이다.
특정 환경이나 서버에 종속되지 않은 애플리케이션을 개발할 수 있다.
Spring은 대표적으로 Spring Web MVC, Transaction 등 다양한 서비스를 제공한다.
Spring Web MVC - 일반적인 서블릿 형태
뒷단에 spring이 제공해 주는 여러 기능들이 숨겨져 있기 때문에
어노테이션을 통해 편하게 코드를 작성할 수 있다.
Transaction - 추상화 계층
오류 없이 진행된다면 commit(); 커밋되고,
하나라도 커밋 되지 않는다면 전체가 rollback(); 롤백한다.