개발툴/Spring
Spring Framework?
가든_
2022. 10. 17. 23:40
등장 배경
- EJB를 사용하면 어플리케이션 작성을 쉽게 할 수 있다.
- EJB : (class + interface2 + xml2 ⇒ *.jar →Deploy → WAS)
- 하지만 EJB는 엄청 복잡함
- 개발 효율성 떨어짐
- 어플리케이션 테스트 위해 EJB 서버 필요
- 웹 사이트가 커지면서 엔터프라이즈급의 서비스가 필요하게 됨 → EJB 사용
- Rod Johnson이 EJB를 사용하지 않는 개발 방법 소개함(스프링의 모태)
- POJO + 경량 프레임 워크 사용하기 시작
- POJO : Plain Old Java Object
- 특정 기술에 종속적이지 않아서 생산성, 이식성 향상
- 경량 프레임워크 : MyBatis, 스프링…
- EJB가 제공하는 서비스를 지원해 줄 수 있는 프레임 워크
- 장점
- EJB같은 거창한 프레임 워크 필요 없음
- 오픈 소스 기반 -> 무료로 사용 가능
- 많은 라이브러리 지원
- 모든 플랫폼에서 사용 가능
- POJO : Plain Old Java Object
Spring Framework
- 엔터프라이즈 급 어플리케이션을 만들기 위한 모든 기능을 종합적으로 제공
- 드라이버 로딩, DB 연결, PrepareStatement, SQL 실행, ResultSet, Close,,, 자동으로 가능!
- SQL문 작성 & DTO 작성만 하면 된다
- 개발자가 복잡하고 실수하기 쉬운 Low Level에 신경 쓰지 않고 Bussiness Logic에 전념할 수 있게 도와줌
구조

- Spring 삼각형
- POJO(Plane Old Java Object)
- 객체 지향 원리에 충실한 자바 객체
- PSA(Portable Service Abstraction)
- 변화에 관계없이 일관된 방식으로 기술에 접근이 가능하게 하는 설계 방식
- IoC/DI(Dependency Injection)
- 유연하게 확장 가능한 객체를 만들어 두고 객체간의 의존 관계는 외부에서 다이나믹하게 설정
- AOP(Aspect Oriented Programming)
- 관심사의 분리로 소프트웨어 모듈성 향상
- POJO(Plane Old Java Object)
특징
- 경량 컨테이너
- 자바 객체의 생성과 소멸과 같은 라이프 사이클 관리
- 스프링 컨테이너에서 객체를 가져와서 사용하게 된다.
- DI 패턴 지원
- 설정 파일이나, 어노테이션을 통해 객체 간 의존 관계 설정
- 객체 직접 생성하거나 검색할 필요가 없다(제어의 역행)
- 설정 파일이나, 어노테이션을 통해 객체 간 의존 관계 설정
- AOP 지원
- 공통 모듈을 여러 코드에 쉽게 적용 가능
- 문제 해결을 위한 핵심 관심사항과 전체에 적용되는 공통 관심사항을 기준으로 프로그래밍
- 공통 모듈을 여러 코드에 쉽게 적용 가능
- POJO 지원
- 스프링 컨테이너에 저장되는 자바 객체는 인터페이스 구현 혹은 클래스 상속 없이 사용 가능하다
- IoC 지원
- 제어의 반전
- 객체 생성 및 의존 관계의 제어권이 개발자가 아니라 스프링 컨테이너로 넘어감
- 객체에 대한 생성과 생명주기를 관리하는 기능을 제공하기 때문
- 제어의 반전
- 다양한 API 지원
- MyBatis, Hibernate, JPA...