Spring Framework
- POJO 기반의 JAVA EE 애플리케이션 개발을 지원하는 프레임워크
- java ee(Java Enterprise Edition): 서버개발에 필요한 기능을 모아서 만든 표준. EJB가 핵심 기술
- EJB: 자바 API중 하나로 업무 로직을 처리함
- POJO(Plain Old Java Object): EJB 등장 이전의, 특정 실행환경이 필요없는 자바 객체로 개발하자는 의미로 붙여진 이름
- 과거 JAVA EE 서버 배포를 위해 많은 XML설정이 필요했는데 이를 개선하기 위해 스프링이 출시됨
IOC
- Inversion of Control : 제어 역전
- 프로그래머가 직접 객체 제어를 수행하지 않고 여러 프레임워크, 컨테이너가 수행하는 것
DI
- Dependency Injection : 의존성 주입
- 한 객체(B)가 다른 객체(A)의 의존성을 제공하는 것.
= 한 객체(A)가 다른 객체(B)를 사용하는 것
- B가 변경 시 A도 바뀌면 의존성이 있다고 표현.
- 방법1: 일체형. A객체 내부에 B와 C가 포함되어 있으며 내부에서 생성해서 사용
- 방법2: 조립형. A객체가 외부의 B와 C를 불러와(Dependency Injection) 사용
A객체는 B와 C객체로부터 의존성을 주입받음 / A객체는 B와 C객체를 의존함
Spring Container
- 스프링 프레임워크의 가장 중요한 기능 담당
- 다양한 인터페이스와 구현 클래스로 구성되어 있으며 자바 객체의 생성/소멸 관리
- 개발자가 작성한 코드의 처리를 위임받아 독립적으로 처리
- 객체의 조립과 관점지향 프로그램 지원
종류
BeanFactory 인터페이스
bean: spring container가 관리하는 자바객체
- 빈 컨테이너에 접근하기 위한 최상위 인터페이스
- 객체(bean)의 라이프사이클 관리, 객체 조립 지원
ApplicationContext 인터페이스
- BeanFactory를 상속받은 인터페이스
- 구동시점에 등록 요청한 Bean객체들을 스캔하여 객체화
- 객체의 라이프사이클 관리, 객체 조립, AOP, 국제화, EJB 연동 지원
- AOP(Aspect Oriented Programming): 관점지향프로그래밍.
여러군데에서 사용되는 중복 코드를 분리하고 method는 본연의 기능만 충실하자는 개념.
- 중복코드를 aspect라고 부름
WebApplicationContext 인터페이스
- 웹 애플리케이션 환경에 특화되어있는 Application Context
- 제공기능은 ApplicationContext와 동일
주요 API
Object getBean(String name)
- 스프링 컨테이너에서 지정된 이름에 해당하는 객체를 가져옴
T getBean(String name, Class<T>
requiredType)
- 스프링 컨테이너에서 지정된 이름, 지정된 클래스타입의 객체를 가져옴
참고
https://jforj.tistory.com/50
https://taesan94.tistory.com/86?category=364478