본문 바로가기
Java

Spring과 Spring Boot

by invelog 2023. 8. 7.
반응형

Spring Framework

Java Platform을 위한 오픈소스 어플리케이션 프레임워크로서 스프링(Spring)이라고도 한다. 스프링은 동적인 웹사이트 개발을 위한 여러 서비스를 제공하고 있는데 대한민국의 공공기간 웹 서비스 개발 시에 사용되는 전자정부 프레임워크의 기반 기술로 쓰이고 있다. 

Spring Framework의 장점으로는

  • 경량 컨테이너 : 기존 자바 엔터프라이즈는 불필요하게 복잡하며 무거운 서버(WAS)가 필요했으며 다루기 힘든 설정파일 구조와 패키징, 불편한 배포 등과 같은 단점이 있었고 반면 스프링은 자체가 가벼운 편은 아니나 Tomcat과 같은 단순한 서버 환경에서도 동작하고 비교적 단순한 개발환경을 가지고 있다. 
  • IoC(Invertion of Control : 제어의 역전) : 기존에는 객체가 생성되고 클래스 내부에서 의존성 객체를 생성한 후 의존성 객체 메서드를 호출하는 순서였다면 스프링에서는 객체를 생성하고 제어권을 스프링에 위임하여 스프링이 만들어놓은 객체를 주입한 후 의존성 객체 메서드를 호출하는 순서로 바뀌었다. 이와 같이 객체의 의존성을 역전시켜 객체간의 결합도를 줄이고 유연한 코드를 작성할 수 있도록 하여 가독성을 향상시키고 코드 중복을 피하며 유지 보수를 편하게 할 수 있도록 하였다. 스프링은 모든 의존성 객체를 스프링이 실행될 때 만들어주고 필요한 곳에 주입시킴으로써 Bean들은 싱글톤 패턴의 특징을 가지게 되며 제어의 흐름을 스프링에 위임하여 작업을 처리하게 된다. 
  • DI(Dependency Injection : 의존 주입) : 스프링은 객체의 의존성을 의존성 주입을 통해 관리한다. 즉, 직접 생성하는 것이 아니라 외부에서 생성한 후 주입시켜주는 방식이다. 이를 통해 모듈 간의 결합도가 낮아지고 유연성이 높아진다. 각 클래스가 인터페이스를 기반으로 호출하게 하고 의존성 주입을 통해 객체 생성을 추상화하는 방법을 DI(의존 주입)이라고 한다. 의존성 주입 방법에는 생성자 기반 의존성 주입(Construction Injection)과 Setter 기반 의존성 주입(Setter Injection)이 있다. 스프링에서는 객체를 Bean이라고 하고 Bean으로 관리하는 객체들의 생성과 소멸에 관한 작업을 자동으로 수행해주는데 객체가 생성되는 곳을 스프링에서는 Bean 컨테이너라고 한다. 
  • AOP(Aspect-Oriented Programming : 관점지향 프로그래밍) : 객체지향 프로그래밍(Objective-Oriented Programming)을 돕는 보조적인 부분으로 관심사의 분리(기능의 분리) 문제를 해결하기 위해 만들어진 프로그래밍 패러다임이다. AOP는 핵심 관심 사항과 공통 관심 사항으로 분리시키고 각각을 모듈화하는 것을 의미한다. 업무 로직을 포함하는 기능을 핵심 기능이라 하며 핵심 기능을 도와주는 부가적인 기능을 부가 기능이라 한다. 부가 기능은 Aspect로 정의하며 핵심 기능에서 부가 기능을 분리함으로써 핵심 기능을 설계하고 구현할 때 객체지향적인 가치를 지킬 수 있도록 도와준다. 

이 있다. 

 

Spring Boot

Spring Framework는 환경 설정이 복잡한 편이다. 이러한 어려움을 해결하고자 나온 것이 Spring Boot이다. Spring Framework를 사용하기 위한 많은 설정 부분을 자동화하여 편하게 스프링을 사용할 수 있도록 한다. Spring Boot Starter Dependency만 추가해주면 바로 API를 정의하고 내장되어 있는 Tomcat이나 Jetty로 웹 어플리케이션 서버를 실행할 수 있다. 

 

Spring Framework와 Spring Boot의 차이

  • Spring Boot는 내장된 Tomcat을 사용하기 때문에 따로 설치하거나 버전 관리를 해주지 않아도 된다. 
  • 과거 Spring Framework에서는 각각의 Dependency들 간에 호환되는 버전을 일일히 맞춰줘야 하는 부분이 있었는데 Starter가 대부분의 Dependency를 관리해주기 때문에 이러한 수고를 덜 수 있다. 
  • Spring Boot는 XML 설정을 하지 않아도 된다. jar 파일을 이용하여 옵션만으로 쉽게 배포가 가능하며 어플리케이션의 모니터링과 관리도 제공한다. 
반응형

'Java' 카테고리의 다른 글

문자열 비교 - Equals() 와 == 연산자의 차이  (0) 2024.01.09
extends와 implements  (0) 2023.08.24
Java의 Annotation  (0) 2023.08.07