[Spring] Spring VS Spring boot VS Spring MVC 개념 및 차이점
요즘 spring boot가 스프링진영에서 제일 많이 쓰인다고 한다.
듣기만 했지 이것 또한 실무에서 만나본 적이 없다. (생각보다 한 번 개발된 서비스는 쉽게 변하지 않는다.)
최근에 개인 프로젝트를 진행하면서 사용하고 있는데 셋팅도 쉽고 여러모로 스프링 보다 편한부분이 많다.
앞으로는 더 많이 쓰일 것 같다고 하니 잘 익혀두고 알아두면 좋을 스프링 부트
Spring VS Spring boot VS Spring MVC 개념 및 차이점
Spring
- 오픈 소스 경량 프레임 워크
- 자바 개발자가 간단하고 안정적이며 확장 가능한 엔터프라이즈 애플리케이션을 빌드 할 수 있도록 함
- 비즈니스 개체를 관리하는 데 도움이되는 다양한 방법을 제공하는 데 중점을 둠
- Java 데이터베이스 연결 (JDBC), JavaServer Pages (JSP) 및 Java Servlet과 같은 기존 Java 프레임 워크 및 API (Application Programming Interface)에 비해 웹 애플리케이션 개발이 훨씬 쉬워짐
- AOP (Aspect-Oriented Programming), POJO (Plain Old Java Object) 및 DI (dependency injection)와 같은 다양한 새로운 기술을 사용하여 엔터프라이즈 애플리케이션을 개발
- 스프링 AOP 같은 서브 프레임 워크라고도 층의 집합
- Spring 개체 관계형 매핑 (Spring ORM). Spring Web Flow 및 Spring Web MVC 등이 있음
- 웹 응용 프로그램을 구성하는 동안 이러한 모듈을 별도로 사용 가능
- 모듈은 웹 응용 프로그램에서 더 나은 기능을 제공하기 위해 함께 그룹화 가능
Spring MVC
- Spring은 확장 가능한 애플리케이션을 만드는 데 널리 사용 되는 Spring MVC 프레임 워크를 제공
- Spring MVC 프레임 워크는 Model View, Controller라는 모듈의 분리를 가능하게하고 애플리케이션 통합을 원활하게 처리
- 개발자는 일반 Java 클래스를 사용하여 복잡한 응용 프로그램을 만들 수 있음
- 모델 객체는 맵을 사용하여 뷰와 컨트롤러간에 전달
Spring Boot
- Spring Boot는 기존의 스프링 프레임 워크 위에 구축 (스프링 프레임 워크 기반)
- 스프링의 모든 기능을 제공하면서도 스프링보다 사용하기 쉬움
- Spring Boot는 마이크로 서비스 기반 프레임 워크이며 매우 짧은 시간에 프로덕션 준비 애플리케이션을 만듦
- Spring Boot에서는 모든 것이 자동으로 구성됨
- 특정 기능을 활용하기 위해 적절한 구성을 사용하기 만
- Spring Boot는 REST API를 개발하려는 경우 매우 유용
- Spring Boot는 프로젝트를 war 또는 jar 파일로 변환하는 기능을 제공
- Tomcat의 인스턴스는 클라우드에서도 실행 가능
- 자주 사용하는 라이브러리가 미리 조합되어있음
- 복잡한 설정이 자동 처리됨
- 내장서버를 포함 (톰캣) 서버를 추가로 설치하지 않아도 바로 개발 가능
- 톰캣, 제티와 같은 WAS에 배포하지 않고도 실행할 수 있는 jar 파일로 웹어플리케이션 개발 가능
Spring boot의 4계층
- Presentation Layer : 이름에서 알 수 있듯이 view (예 : front-end 부분)로 구성
- Data Access Layer : 데이터베이스에 대한 CRUD (create, retrieve, update, delete)
- Service Layer : 서비스 클래스로 구성되며 데이터 액세스 계층에서 제공하는 서비스를 사용
- Integration Layer : 웹별 웹 서비스 (인터넷을 통해 사용 가능한 모든 서비스 및 XML 메시징 시스템 사용)로 구성
spring | spring boot | spring MVC |
---|---|---|
엔터프라이즈 애플리케이션을 개발하는 오픈 소스 경량 프레임 워크 | REST API를 개발하는 데 널리 사용되는 기존의 스프링 프레임 워크 위에 빌드 | Model View이며 웹 애플리케이션 개발에 널리 사용되는 Controller 기반 웹 프레임 워크 |
의존성 주입 | 자동 구성 | 수동으로 빌드 |
명시 적으로 서버를 설정 | Tomcat 및 Jetty 등과 같은 임베디드 서버를 제공 | |
실행 시 배치 디스크립터가 필요 | 배치 디스크립터에 대한 요구 사항은 없음 | 배치 디스크립터가 필요 |
개발자는 많은 코드를 작성 | 코드 줄일 수 있음 , 개발 시간을 줄이고 생산성을 높임 | 개발에 더 많은 시간이 걸림 |
메모리 내 데이터베이스에 대한 지원을 제공하지 않음 | H2와 같은 메모리 내 데이터베이스에 대한 지원을 제공 | |
Presentation Layer, Data Access Layer, Service Layer, Integration Layer | Model, View, Controller, Front Controller |
추가로 spring이전의 엔터프라이즈 프레임워크인 EJB에 대한 개념을 알아보겠다.
아직도 오래된 프로젝트, 공공기관에서 간혹가다 만날 수 있으며, 나도 잠깐 만난적이 있다.
EJB (Enterprise Java Beans)
- 엔터프라이즈 자바빈즈(Enterprise JavaBeans; EJB)는 기업환경의 시스템을 구현하기 위한 서버측 컴포넌트 모델
- 이제까지는 상속받으면 부모가 내꺼되고 해서 상속을 받고받고 하면 내가 없어짐 내가 상속으로 이미 결정됨 (EJB)
- 즉, EJB는 애플리케이션의 업무 로직을 가지고 있는 서버 애플리케이션
- EJB 사양은 Java EE의 자바 API 중 하나로, 주로 웹 시스템에서 JSP는 화면 로직을 처리하고, EJB는 업무 로직을 처리하는 역할
- 애플리케이션의 비즈니스 로직을 요약하는 서버 측 소프트웨어 구성 요소
- EJB 컨테이너는 컴퓨터 안정성, JSL (Java Servlet Lifecycle) 관리, 트랜잭션 절차 및 기타 웹 서비스를 포함한 웹 관련 소프트웨어 요소에 대한 런타임 환경을 제공
- EJB 응용 프로그램을 실행하려면 Jboss, Glassfish, Weblogic, Websphere 등과 같은 응용 프로그램 서버가 필요
- Life Cycle Management, Object Pooling, Transaction Processing, Security 등을 수행
EJB 세 가지 유형
Session Bean
- 세션 빈은 로컬, 원격 또는 웹 서비스 클라이언트에 의해 호출 될 수있는 비즈니스 로직을 포함
- Stateful 세션 빈 및
- Stateless 세션 빈
Message Driven Bean
- Session Bean과 마찬가지로 비즈니스 로직을 포함하고 있지만 메시지를 전달하여 호출
Entity Bean
- 데이터베이스에서 지속될 수있는 상태를 요약
- Bean Managed Persistence
- 컨테이너 관리 지속성
특징
- Java EE의 사양
- EJB 데이터 소스, JMS 리소스 및 JPA 리소스를 포함하여 컨테이너에 모든 것을 삽입 가능
references
https://www.geeksforgeeks.org/difference-between-spring-and-spring-boot/?ref=rp
https://www.geeksforgeeks.org/difference-between-spring-mvc-and-spring-boot/?ref=rp
https://www.geeksforgeeks.org/difference-between-ejb-and-spring/?ref=rp