티스토리 뷰
스프링 프레임워크의 핵심 기능
스프링 프레임워크는 두 가지 핵심 기능을 중심으로 동작합니다: **의존성 주입(DI)**과 **관점 지향 프로그래밍(AOP)**입니다.
1. 의존성 주입 (Dependency Injection, DI)
의존성 주입은 **'필요한 객체를 외부에서 주입받는 방식'**을 의미합니다. 쉽게 말해, 객체가 필요한 다른 객체를 직접 생성하지 않고, 외부에서 대신 만들어 제공받는 구조입니다.
- 의존하는 부분: '사용하는 객체'가 필요로 하는 '다른 객체'를 의미합니다.
- 외부 주입: '사용하는 객체' 바깥에서 '필요한 객체'를 생성하여 전달합니다.
스프링에서는 이러한 역할을 DI 컨테이너가 수행합니다. DI 컨테이너는 객체(빈)를 생성하고 관리하며, 필요한 곳에 자동으로 주입해줍니다. 예를 들어, new 키워드로 직접 객체를 생성하는 대신, 스프링이 이를 대신 처리해줍니다.
장점
- 코드의 유연성과 재사용성이 높아집니다.
- 객체 간의 결합도가 낮아져 유지보수가 용이합니다.
- 테스트 시 Mock 객체를 활용하기 쉬워집니다.
2. 관점 지향 프로그래밍 (Aspect-Oriented Programming, AOP)
관점 지향 프로그래밍은 프로그램을 두 가지 관심사로 나누어 처리합니다:
- 중심적 관심사(Primary Concern): 애플리케이션이 본래 수행해야 할 핵심 기능.
- 횡단적 관심사(Crosscutting Concern): 로깅, 보안, 트랜잭션 관리 등 여러 곳에서 반복적으로 사용되지만 핵심 기능은 아닌 부가적인 작업.
AOP는 이러한 횡단적 관심사를 별도로 분리하여 관리하고, 중심적 관심사에만 집중할 수 있도록 돕습니다. 예를 들어, 로깅 기능을 여러 클래스에 직접 작성하지 않고 AOP로 설정하면 필요한 곳에서 자동으로 호출됩니다.
장점
- 코드 중복을 줄이고 유지보수를 쉽게 만듭니다.
- 개발자는 핵심 비즈니스 로직에만 집중할 수 있습니다.
DI 컨테이너란?
DI 컨테이너는 스프링에서 의존성 주입을 담당하는 핵심 구성 요소입니다. 다음과 같은 역할을 합니다:
- 애플리케이션 실행 시 필요한 객체(빈)를 생성 및 관리합니다.
- 의존 관계를 설정하고 필요한 곳에 주입합니다.
스프링 컨테이너는 XML 설정 파일이나 자바 기반 설정 파일(예: @Configuration, @Bean)을 통해 작동하며, 이를 통해 개발자는 객체 생성과 의존성 관리를 스프링에 맡길 수 있습니다.
DI 컨테이너 사용 규칙 5가지
- 인터페이스를 이용하여 의존성을 만든다.
- 인스턴스를 명시적으로 생성하지 않는다.
- 어노테이션을 클래스에 부여한다.
- 스프링 프레임워크에서 인스턴스를 생성한다
- 인스턴스를 이용하고 싶은 곳에 어노테이션을 부여한다.
2 : 인스턴스를 명시적으로 생성하지 않는다는 말은 인스턴스 생성에 new 키워드를 사용하지 않는다는 것을 의미한다.
3 - 4 : 인스턴스를 생성하려는 클래스에 인스턴스 생성 어노테이션을 부여한다.
| 어노테이션 | 개요 |
| @Controller | 인스턴스 생성 지시, 스프링 MVC 를 이용할 때 컨트롤러에 부여 |
| @Service | 인스턴스 생성 지시, 트랜잭션 경계가 되는 도메인(서비스) 기능에 부여 |
| @Repository | 인스턴스 생성 지시, 데이터베이스 액세스(리포지토리) 기능에 부여 |
| @Component | 위 용도 이외의 클래스에 부여 |
5 : 스프링 프레임워크에 의해 생성된 인스턴스를 이용하는 클래스에 참조를 받는 필드를 선언하고 필드에 @Autowired 어노테이션을 부여한다.
'스프링프레임워크' 카테고리의 다른 글
| 스프링 프레임워크에서의 AOP(관점 지향 프로그래밍) (0) | 2025.02.27 |
|---|---|
| 어노테이션 역할 (0) | 2025.02.27 |
| 개발에 사용하는 라이브러리 (0) | 2025.02.25 |
| 웹 애플리케이션 만들기 필수 지식 (0) | 2025.02.25 |
| 스프링 프레임워크 개요 (0) | 2025.02.25 |

