자바(JAVA) 플랫폼을 위한 오픈 소스 애플리케이션 프레임워크로서 동적인 웹 사이트를 개발하기 위한 여러 가지 서비스를 제공하고 있다.
자바 언어의 가장 큰 특징은 객체 지향 언어라는 것인데 스프링은 이런 특징을 잘 살려낸 프레임워크로, 좋은 객체 지향 애플리케이션을 개발할 수 있게 도와준다.
- IoC(Invertion of Control)
- DI(Dependency Injection)
- AOP(Aspect-Oriented Programming)
IoC는 '제어의 역전'이란 말로 메소드나 객체의 호출작업을 개발자가 결정하는 것이 아니라, 외부에서 결정되는 것을 의미한다.
객체의 의존성을 역전시켜 객체 간의 결합도를 줄이고 유연한 코드를 작성할 수 있게 하여 가독성 및 코드 중복, 유지 보수를 편하게 할 수 있게 한다.
DI는 스프링이 다른 프레임워크와 차별화되어 제공하는 의존 관계 주입 기능으로,
객체를 직접 생성하는 게 아니라 외부에서 생성한 후 주입 시켜주는 방식이다.
DI를 통해서 모듈 간의 결합도가 낮아지고 유연성이 높아진다.
스프링에서는 객체의 생성과 소멸에 관련된 작업을 자동적으로 수행해주는데 객체가 생성되는 곳을 스프링에서는 Bean 컨테이너라고 부른다. 스프링에서는 객체를 Bean이라고 부르며, 프로젝트가 실행될때 사용자가 Bean으로 관리하는 객체들을 자동으로 생성해준다.
관점 지향 프로그래밍.
어떤 로직을 기준으로 핵심적인 관점, 부가적인 관점으로 나누어서 보고 코드들을 관점을 기준으로 나누어서 각각 모듈화하겠다는 의미.
이때, 소스 코드상에서 다른 부분에 계속 반복해서 쓰는 코드들을 발견할 수 있는 데 이것을 흩어진 관심사(Crosscutting Concerns)라 부르고, 흩어진 관심사를 모듈화하고 핵심적인 비즈니스 로직에서 분리하여 재사용하겠다는 것이 AOP의 취지이다.
Transaction Manager, Hibernate Datasource, Entity Manager, Session Factory 등과 같은 설정을 하는데에 어려움이 많이 있다.
최소한의 기능으로 Spring MVC를 사용하여 기본 프로젝트를 세팅하는데 개발자에게 너무 많은 시간이 걸린다.
스프링(Spring)을 더 쉽게 이용하기 위한 도구.
스프링 이용하여 개발을 할 때, 이것저것 세팅을 해야 될 요소들이 많다. 여러가지를 세팅해야되는 진입 장벽이 존재하여 처음 배우려는 사람들은 중도에 그만두는 경우가 많다고 한다. Spring Boot는 매우 간단하게 프로젝트를 설정할 수 있게 하여, Spring 개발을 조금 더 쉽게 만들어주는 역할을 하고 있다.
spring-boot-starter-*
*부분에 원하는 스타터명을 명시하면 된다.
손쉽게 원하는 라이브러리를 import 할 수 있다.