[Spring]스프링 정리
Intro
스프링 기본 개념 정리
스프링
- 자바 기반의 웹 어플리케이션을 만들 수 있는 프레임워크
- 동적인 웹사이트 개발을 위해 사용함.
스프링 특징
DI(Dependency Injection) - 의존성 주입
- 어떤 객체를 사용하는 주체가 객체를 직접 생성하는 것이 아니라, 객체를 외부에서 생성해서 사용하려는 주체 객체에 주입시켜주는 방식.
- 객체가 의존성을 개발자가 객체 내부에서 직접 호출(new)하는 대신에, 외부(스프링 컨테이너)에서 객체를 생성해서 넣어주는 방식.
- 두 객체 간의 관계를 맺어주는 것을 의존성 주입이라 한다.
- 예를 들어, Controller가 Service 객체를 사용하고 있는 경우 Service의 메서드가 변경되면 Controller도 수정이 필요하게 되는데, 이를 의존성이 있다고 한다.
AOP(Aspect-Oriented Programming)
- AOP(관점 지향 프로그래밍)란, 공통 기능에 관점을 두어 공통적으로 사용되는 기능을 따로 분리하여 재사용하는 기법이다.
IOC(Inversion of Control) - 제어역전
- IOC란, 사용자의 제어권을 다른 주체에게 넘기는 것을 말한다.
- Java객체를 개발자가 아닌, Spring Container(컨테이너)에 맡긴다.
- 개발자에서 프레임워크로 제어의 객체 관리권한이 넘어간 것을 제어역전이라 한다.
- 기존 순서 : 객체 생성 → 의존성 객체 생성 → 의존성 객체 메서드 호출
- 제어역전 후 순서 : 객체 생성 → 의존성 객체 주입 → 의존성 객체 메서드 호출
결론
💡 스프링이 모든 의존성 객체를 스프링이 실행될 때 다 만들어주고 필요한 곳에 주입시켜 줌으로써, Bean 들은 싱글턴 패턴의 특징을 가지며 제어의 흐름을 스프링에게 맡겨 작업을 처리함.