Spring
자바 엔터프라이즈 개발을 편리하게 해 주는 경량급 오픈 소스 애플리케이션 프레임워크이다.
Spring의 주요 특징
- 의존 주입(Dependency Injection) 지원
- AOP(Aspect-Oriented Programming) 지원
- MVC(Model View Controller) 웹 프레임워크 제공
- JDBC, JPA 연동, 선언적 트랜잭션 처리 등 DB 연동 지원
AOP는 최후까지 애플리케이션 로직을 담당하는 코드에 남아 있는 기술 관련 코드를 분리해서 별도의 모듈로 관리하게 해 주는 기술이다. AOP를 적용하지 않았을 때는 기술과 비즈니스 로직이 얽혀 있어 다루기 힘들 뿐만 아니라 기술 코드가 중복되어 나타나는 것도 문제점이다.
스프링의 핵심 도구는 객체지향과 DI, POJO이다.
POJO _Plain Old Java Object
오래된 방식의 간단한 자바 오브젝트라는 말로써 중량 프레임워크들을 사용하게 되면서 종속된 무거운 객체를 만들게 된 것을 반발해서 사용하게 된 용어이다.
1. EJB의 낮은 생산성, 성능, 불필요한 기술적인 복잡도를 보완한 프레임워크이다.
2. 특정 환경, 규약에 종속되지 않는다. (환경에 독립적이어야 한다.)
3. 객체지향 원리에 충실한다.
Java Beans 정의
- POJO 예시 코드를 Java Beans라고 한다.
- DB에서 VO도 Beans라고 할 수 있다.
- 데이터를 읽고 쓰기 가능한 Java Class이다.
Java Beans의 규칙
- 멤버 변수의 접근자는 private이다.
- 멤버 변수마다 getter와 setter가 존재해야 한다.
- getter와 setter 메서드의 접근자는 public이어야 한다.
POJO의 장점
- 특정 기술과 환경에 종속되지 않기 때문에 깔끔한 코드가 된다.
- 자동화 테스트에 유리하다.
- 객체지향적인 설계를 자유롭게 적용할 수 있다.
제어의 역전(IoC)와 의존성 주입(DI)
의존성 주입
- 의존성 주입이란 객체에 스프링 컨테이너가 또 다른 객체와 의존성을 맺어 주는 것이다.
- 컨테이너에서 관리할 객체를 지정하고 코드 내에서는 컨테이너에서 객체를 받아 사용한다.
- 빈을 정의할 때 객체 간 의존 관계를 명시해 코드에서 사용 시 자동 주입되도록 한다.
제어의 역전
객체의 생성부터 소멸까지 객체의 모든 생명주기를 개발자가 아닌 컨테이너가 담당하는 것이다.
원래 개발자가 가지고 있어야 할 객체의 생명주기 제어권이 컨테이너에게 넘어갔기 때문에 제어가 역전되었다라고 한다.
참고한 사이트: https://12bme.tistory.com/157
https://ksshlee.github.io/spring/spring/
https://codevang.tistory.com/241