Spring이란?
자바 기반의 오픈 소스 애플리케이션 프레임워크로 동적인 웹 사이트를 개발하기 위한 여러 가지 서비스를 제공한다.
Spring의 큰 특징
IoC 프로그래밍 모델이며 구체적으로 DI라는 방식을 통해 의존성 역전 제어를 한다.
1. IoC (Inversion of Control) : 제어가 역전됨
- 개발자가 직접 객체를 관리하지 않고 스프링 컨테이너에서 직접 객체를 생성하여 해당 객체에 주입 시켜주는 것을 의미한다.
- B라는 객체가 스프링 컨테이너에서 관리되고 있는 Bean 이라면 @Autowired를 통해 객체를 주입받는 상황을 말한다.
- 객체 생명 관리, 흐름 제어를 제 3자에게 위임하는 프로그래밍 모델을 의미한다.
2. DI(Dependency Injection) : 의존성 주입
- 오브젝트 레퍼런스를 외부(스프링 컨테이너)에서 주입받고, 이를 통해 여타 오브젝트와 다이내믹하게 의존관계가 만들어지는 것이 핵심이다.
- 다시 말하면, 객체(B)를 사용하는 주체(A)가 객체(B)를 직접 생성하는게 아니라 객체를 외부(스프링 컨테이너)에서 생성해서 사용하려는 주체 객체(A)에 주입시켜주는 방식이다.
- DI는 IoC 프로그래밍 모델을 구현하는 방식중 하나이다.
- 클래스타입이 고정되어있지 않고, 인터페이스 타입의 파라미터를 통해 다이나믹하게 구현 클래스를 결정해서 제공 받을수 있어야한다.
Spring boot란?
스프링(Spring)을 더 쉽게 이용하기 위한 도구이다. 스프링을 이용하여 개발을 할 때는, 이것저것 환경설정 세팅을 직접 해줘야 하지만, 스프링부트를 사용하면 이러한 설정들을 최소화 시켜준다.
Spring boot의 큰 특징
1. Spring boot Starter
Spring에서는 설정을 잘못하면 서로 간의 의존성이 충돌되는 경우가 많았다. 하지만, 스프링 부트에서는 spring-boot-starter을 사용하면 종속된 모든 라이브러리를 알아서 땡겨오기 때문에, 종속성이나 호환 버전에 대해 최소한의 작업만 하면된다.
2. 내장 서버
Spring에서는 별도로 웹서버를 실행하여 애플리케이션의 빌드된 파일 경로를 지정해주어 실행하였다. 하지만, 스프링부트는 톰캣같은 웹서버(Tomcat)가 내장되어 있어서 쉽게 빌드 및 배포할 수 있다.
3. 어노테이션 (Annotation)
기본적으로 모든 빈(Bean) 설정을 XML이 아닌 어노테이션(annotation) 방식으로 처리한다. Spring boot의 main 메서드는 @SpringBootApplication 어노테이션은 @SpringBootConfiguration, @ComponentScan, @EnableAutoConfiguration 어노테이션을 축약한 형태이다.
댓글