본문 바로가기

개발중/Spring

[Spring] '스프링과 스프링부트의 차이점'을 모르고 스프링 할 줄안다고 하지말기 !

728x90
반응형

Spring FrameWork 란 

  • 스프링은 JAVA 애플리케이션 개발을 위한 포괄적인 인프라를 지원해주는 프레임워크이다.
  • 스프링 도입 전과 후
    • 스프링 도입 전 : JAVA 웹개발 초기에는 데이터 소스에 레코드를 삽입하기 위해서 많은 코드를 작성해야 했다.
    • 스프링 도입 후 : 스프링의 기능중의 하나인 Spring JDBC Template 을 사용하면 단 몇줄로 이 작업을 끝낼 수 있게된다.
  • Spring 의 기능
    • Spring JDBC
    • Spring MVC
    • Spring Security
    • Spring AOP
    • Spring ORM
    • Spring Test

 

Spring Boot 란

  • Spring Boot 는 기본적으로 Spring Framework 를 설정하는데 필요한 구성을 제거하는 Spring Framework 확장 버전이라고 생각하면 편하다. 
  • 개발자 입장에서 더 빠르고 효율적으로 프로그램 개발이 가능하도록 지원한다.
  • Spring Boot 의 기능
    • 빌드 및 애플리케이션 구성 단순화를 위한 Starter Dependency
    • 애플리케이션 배포의 복잡성을 피하기 위한 임베디드 서버 제공
    • 매트릭, 상태확인 및 외부 구성작업
    • Spring 기능을 위한 자동구성 작업
    • Spring-boot-starter-data-jpa
    • Spring Boot Starter Security
    • Spring Boot Starter Thymeleaf

 

Maven 종속성

  • Spring 으로 웹 개발 프로젝트 할 경우
    • Spring Test, Junit, Hamcrest, Mockito 라이브러리 종속성을 추가해줘야 한다.
  • Spring Boot 로 웹 개발을 할 경우
    • 모든 라이브러리 구성을 자동으로 포함하기 위한 Test 용 Starter Dependency 하나만 추가하면 끝이다.
    • 단순함이 강력한 장점이다.

 

MVC 구성

  • MVC구성을 보면 기타 지원 ( Dispatcher, Suvlet, Mapping ) 등 따로 개발자가 정의해야한다.
    • web.xml 파일이나 initalizer 클래스를 이용해서 구성 작업을 해줘야 한다.
    • 또한 구성 클래스에 EnableWebMvc 주석을 추가하고 컨트롤러에서 반환된 뷰를 확인하기위해 View resolver 를 정의해줘야 한다.
  • Spring Boot 는 web starter 만 추가하면 작동하도록 몇 가지 속성만 추가해주면 된다.
  • Spring 에서 필요한 모든 구성은 auto-configuration 이라는 프로세스를 통해서 Boot 웹 스타터를 추가하는 작업 하나로 자동으로 프로젝트가 구성된다.

 

Spring Boot 보안

  • Spring 을 사용해서 보안을 활성화하기 위해서는 spring-security-web 과 spring-security-config 종속성을 모두 필요로 한다.
  • 또한 WebSecurityConfigureAdapter 를 확장하고 EnableWebSecurity 주석을 사용하는 클래스를 추가해줘야 한다.
  • 이 과정에서 inMemoryAuthentication 을 사용한 인증이 필요하다.
  • Spring Boot 는 모든 종속성을 클래스 경로에 자동으로 추가하기 때문에 spring-boot-starter-security 의 종속성만 정의해주면 끝난다.

 

Spring Boot 배포

  • Spring 이나 Spring Boot 모두 Maven 혹은 Gradle 과 같은 일반적인 패키지 관리 기술을 지원하지만, 배포에서는 다른 점을 보이고 있다.
  • Spring Boot Maven Plugin 은 maven 에서 Spring Boot 를 지원하고 있다.
  • 또한 실행 가능한 jar 또는 war 아카이브를 패키징하여 적재적소에서 애플리케이션을 실행할 수 있다.
  • Spring Boot 의 배포 기능
    • 임베디드 컨테이너 제공
    • java -jar 명령을 사용해서 jar 를 독립적으로 실행하도록 프로비저닝
    • 외부 컨테이너에 배포할 때 잠재적인 jar 충돌을 피하기 위해 종속성을 제외하는 옵션
    • 배포 시 활성 프로필을 지정하는 옵션
    • 통합 테스트를 위한 무작위 포트 생성

 

Spring Boot 는 Spring 자체의 확장 버전이다.
개발, 테스트, 배포가 Spring Fremework 에 비해서 혁신적으로 간편해지는 Freawork 이다.

특정 프로젝트에서 필수적인 종속성 구성이 필요하다면 Spring

일반적인 종속성 구성으로 구현이 가능한 프로젝트라면 SpringBoot 

 

728x90
반응형