- Spring Framework란?
->Spring Framework은 엔터프라이즈 애플리케이션 개발의 복잡함을 겨냥해 만들어진 오픈 소스 프레임워크이다.
궁극적인 목적은 Java 개발의 간소화이다.
- Java 개발 간소화를 위한 4가지 전략
- POJO(Plain-Old Java Object)를 이용한 가볍고 비 침투적인 개발
- POJO는 주요한 Java Object 모델이나 프레임워크 등에 종속적이지 않은, 따르지 않는 Java Object이다.
- 미리 지정된 클래스를 extends 하면 안된다.
- 미리 정의된 인터페이스를 implement 하면 안된다.
- 미리 정의된 Annotation을 포함하면 안된다.
- POJO는 주요한 Java Object 모델이나 프레임워크 등에 종속적이지 않은, 따르지 않는 Java Object이다.
- DI(Dependency Injection)와 인터페이스 지향을 통한 느슨한 결합도
- DI(종속성 주입, 종속객체 주입) : 각 객체를 조율하는 제 3자에 의해 생성 시점에 종속 객체를 부여
- 객체는 종속객체를 생성하거나 얻지 않고 종속객체는 종속객체가 필요한 객체에 주입된다.
- 특정 구현체에 결합되지 않아 느슨한 결합도(Loose Coupling)를 가질 수 있다.
- 어떤 객체가 자신이 필요로 하는 종속객체를 인터페이스를 통해서만 알고 있다면 사용하는 객체 입장에서는 아무런 변경 없이 종속객체를 다른 구현체로 바꿀 수 있다.
- DI(종속성 주입, 종속객체 주입) : 각 객체를 조율하는 제 3자에 의해 생성 시점에 종속 객체를 부여
- 에스펙트와 공통 규약을 통한 선언적 프로그래밍(AOP)
- 소프트웨어 시스템 내부의 컴포넌트 중 로깅, 트랜잭션 관리, 보안 등 애플리케이션 전체에 걸쳐 사용되는 기능을 재사용할 수 있는 컴포넌트로 담을 수 있게 해준다.
- AOP를 사용하면 각 모듈들은 자기 본연의 기능에 충실할 수 있게 되고 전체에 걸쳐 사용되는 기술들은 해당 기능들을 여러 겹으로 덮는 방식으로 구현할 수 있으므로 핵심 기능 모듈에는 변화를 주지 않고 선언적으로 추가적인 기능을 적용할 수 있다.
- 에스펙트와 템플릿을 통한 상투적인 코드 축소
- Spring Container
- Spring Application에는 Spring Container에서 객체가 태어나고 서로 엮이며 소멸한다. 즉 이들의 전체 생명 주기를 관리한다.
- Spring Container는 DI를 이용해 컴포넌트를 관리하고 컴포넌트 간 연관관계 형성도 담당한다. 따라서 이러한 일을 수행할 필요가 없어진 객체들은 재사용성이 올라가고 단위테스트가 용이해진다.
- 스프링 컨테이너의 분류
- 빈 팩토리 : DI에 대한 기본적인 지원을 제공하는 가장 단순한 컨테이너
- 빈(Bean)이란?
- 스프링 컨테이너에서 관리하는 자바 객체
- new를 입력하여 직접 생성하는 객체가 아닌, Spring에 의해 생성되고 관리되는 객체를 뜻함
- 빈(Bean)이란?
- 애플리케이션 컨텍스트
- 빈 팩토리를 확장해 property file에 텍스트 메세지를 읽고 해당 이벤트 리스너에 대한 애플리케이션 이벤트 발행과 같은 애플리케이션 프레임워크 서비스를 제공하는 컨테이너
- 빈 팩토리는 대부분의 애플리케이션에 대해 지나치게 저수준의 기능을 제공해 이를 더 선호한다.
- 빈 팩토리 : DI에 대한 기본적인 지원을 제공하는 가장 단순한 컨테이너
'공부 > Spring' 카테고리의 다른 글
[Spring] Spring vs SpringBoot (0) | 2022.02.22 |
---|---|
[Spring] @Configuration과 @Bean Annotation을 이용한 Bean 등록 (1) | 2022.02.21 |
[Spring] DI(의존성 주입) 3가지 방법 (0) | 2022.02.21 |
[Spring] 기본적인 @AutoWired Annotation 사용법 (0) | 2022.02.21 |
[Spring] Spring MVC 패턴 작동 방식 (0) | 2022.02.19 |