1. IoC (Inversion of Control)
- 제어의 역전
- 객체의 생성과 관리를 개발자가 아닌 framework가 하는 것
- 스프링 애플리케이션에서는 오브젝트(빈)의 생성과 의존 관계 설정, 사용, 제거 등의 작업을 애플리케이션 코드 대신 스프링 컨테이너가 담당
- 스프링 컨테이너 = IoC 컨테이너 (= 빈 팩토리, DI 컨테이너, `[애플리케이션 컨텍스트]` )
- 애플리케이션 컨텍스트 : IoC와 DI 그 이상의 기능을 가짐. (메세지 소스, 환경변수, 어플리케이션 이벤트, 리소스 조회)
* BeanFactory
- 스프링 설정파일에 등록된 <bean> 객체를 생성하고 관리
- 컨테이너가 구동될 때 객체를 생성하는 것이 아니라 클라이언트로부터의 요청에 의해서만 객체를 생성 (Lazy Loading 방식) -> 일반적인 스프링 프로젝트에서 사용할 일이 없음
* ApplicationContext
- BeanFactory가 제공하는 <bean> 객체 관리 기능 외에도 트랜잭션 관리나 메시지 기반의 다국어 처리 기능 지원
- 컨테이너가 구동되는 시점에 <bean>에 등록되어 있는 클래스들을 객체화 하는 즉시로딩(Pre-Loading 방식)
- <bean> option에 lazy-init="true"를 써서 클라이언트가 요청하는 시점에 구동할 수도 있음
- ApplicationContext의 구현 클래스는 매우 다양하지만, 두 개만 알고 있으면 됨
- GenericXmlApplicationContext : 대표적으로 ApplicationContext를 구현한 클래스, 파일 시스템이나 클래스 경로에 있는 xml 설정 파일을 로딩하여 구동하는 컨테이너
- XmlWebApplicationContext : 웹 기반의 스프링 애플리케이션을 개발할 때 사용하는 컨테이너 (직접 개발 안하는 컨테이너)
- 정리 : 스프링 컨테이너는 bean 저장소에 해당하는 xml 설정파일을 참조하여 bean 생명주기 관리
2. DI (Dependency Injection)
- 의존성 주입
- 외부에서 객체를 주입받아 사용하는 것
- 어떤 클래스가 다른 클래스에 의존하는 것
public class A {
// A에서 B를 주입받음
@Autowired
B b;
}
@Component // 클래스 A를 빈으로 등록
public class A {
...
}
3. AOP (Aspect Oriented Programming)
- 관점 지향 프로그래밍
- 프로그래밍을 할 때 핵심관점 과 부가관점 을 나누어서 개발하는 것
- 부가관점 코드를 핵심 관점 코드에서 분리
4. PSA (Portable Service Abstraction)
- 이식 가능한 서비스 추상화
- 어느 기술을 사용하던 일관된 방식으로 처리하도록 하는 것
- 예를 들어, spring에서 database에 접근할 때 JPA, MyBatis, JDBC 등을 사용할 수 있지만, 일관된 방식으로 데이터베이스에 접근하도록 인터페이스를 지원하는 것
'Framework' 카테고리의 다른 글
[Spring] Tomcat + Spring Framework 구동 흐름 정리 (1) | 2023.06.13 |
---|---|
개발표준 (0) | 2023.04.27 |
[Spring] PostConstruct (0) | 2023.04.04 |
Front-End Framework 정리 (0) | 2021.06.13 |
스프링(Spring) AOP : AspectJ Pointcut 표현식 (Feat. 프로젝트에서 꼭 활용할 내용들) (0) | 2020.03.31 |