1) 스프링이란?
- Spring Framework 는 자바에서 가장 많이 사용되는 프레임 워크이다.
- 의존성 주입과 제어역전, 관점지향프로그래밍이 가장 중요한 요소
위 요소들을 통해 느슨한 결합을 달성할 수 있음. Loose Coupling
> 느슨한 결합으로 개발한 어플리케이션은 단위테스트를 수행하기 용이함. > 재사용을 위함.
- Spring은 Java 기반의 애플리케이션 프레임워크
- 엔터프라이즈 애플리케이션을 효율적으로 개발할 수 있도록 돕는 다양한 기능을 제공
- 현재는 다양한 하위 프로젝트들이 존재하여, 웹 애플리케이션부터 배치 처리, 마이크로서비스, 클라우드 환경까지 지원하는 범용적인 프레임워크
(1) 주요 특징
① Ioc Inversion of Control:
- spring의 핵심 개념 중 하나는 loC임.
- IoC는 객체의 생성 및 관리 책임을 스피링 컨테이너에게 위임하는 개념
- 애플리케이션의 결합도를 낮추고 테스트와 유지보수를 쉽게해줌.
- DI Dependency Injection: 스프링은 객체들 간의 의존선을 의존선 주입(DI) 방식으로 관리함.
- 클래스 간에 필요한 의존 객체를 자동으로 주입해줌.
② AOP Aspect-Oriented Programming:
- AOP는 관점지향 프로그래밍으로, 공통적인 관심사를 분리하여 코드의 중복을 줄이고 유지보수 용이
- 로깅, 트랜잭션 관리, 보안 등을 AOP로 처리함.
③ 모듈화
- spring 은 다양한 모듈로 구성돼 필요한 기능만 선택적 사용 가능
- Spring Web, Spring Data, Spring security, Spring Boot 등
④ 트랜잭션 관리
- 스트링은 선언적 트랜잭션 관리를 지원, DB 트랜잭션을 효율적 관리 할수있음
- 트랜잭션의 시작, 커밋, 롤백 자동으로 처리 가능
+) Framework
- 소프트웨어 개발에서 특정 문제를 해결하는 데 필요한 기본적인 구조와 규칙을 제공하는 도구.
- 개발자가 애플리케이션을 만들 때, 프레임워크는 여러가지 기본적인 기능을 미리 구현해 두고, 개발자가 그 위에서 필요한 기능만 추가할 수 있도록 해줍니다.
- 쉽게 말해, 기반 또는 틀을 제공하여 개발자의 작업을 더 효율적이고 조직적으로 만들어주는 도구입니다.
2) 스프링 부트는?
- Spring Framework의 확장으로, 빠르게 애플리케이션을 개발하고 실행할 수 있도록 도와주는 도구
- 즉, Spring Boot는 Spring Framework를 더욱 간편하게 사용할 수 있게 해주는 프레임워크임.
3) 두개의 차이점
Spring Framework는 많은 설정과 구성이 필요하고, 개발자가 직접 설정을 관리해야 하는 경우가 많음.
반면, Spring Boot는 자동 설정(Auto Configuration)을 제공하여, 개발자가 최소한의 설정만으로 애플리케이션을 시작할 수 있게 도와줌.
Spring Boot는 설정에 관한 고민을 줄여주고 빠르게 실행 가능한 애플리케이션을 만드는 데 중점을 둡니다.
(1) 설정 방식 (Configuration)
① Spring Framework
- Spring은 설정이 매우 유연하지만, 많은 경우 XML 파일이나 Java Config 클래스를 통해 다양한 설정을 수동으로 해야함.
- Spring MVC 웹 애플리케이션을 설정할 때 web.xml 파일과 여러 Java Config 클래스를 만들어야 함
- 설정이 복잡하고, 시간이 많이 걸림.
② Spring Boot
- Spring Boot는 자동 설정(Auto Configuration)을 제공
-기본적으로 Spring Boot는 애플리케이션을 실행할 때 필요한 설정을 자동으로 처리> 개발자는 설정에 신경 쓸 필요가 줄어듦.
-예를 들어, Spring Boot에서 웹 애플리케이션을 개발하려면 @SpringBootApplication 애노테이션만으로 애플리케이션을 설정하고 실행할 수 있음.
(2) 애플리케이션 실행 (Running Applications)
① Spring Framework:
-Spring으로 만든 애플리케이션은 기본적으로 외부 서버(Tomcat, Jetty 등)에 배포되어야 실행됨.
-애플리케이션을 실행하려면 WAR 파일을 만들어서 외부 서버에 배포하거나, Tomcat 서버를 직접 설정해야 함.
② Spring Boot:
- Spring Boot는 내장된 웹 서버(예: Tomcat, Jetty)를 제공
- Spring Boot 애플리케이션은 실행할 때 서버가 내장되어 있기 때문에, 애플리케이션을 독립형 JAR 파일로 실행할 수 있음.
- java -jar your-app.jar 명령으로 바로 실행 가능하며, 별도로 서버를 설정할 필요가 없음.
(3) 프로젝트 시작과 설정
①Spring Framework:
-Spring 애플리케이션을 처음 시작할 때, 기본적인 설정을 하나씩 수동으로 해야 함. 이때, 필요한 라이브러리나 의존성도 수동으로 추가해야 함.
-복잡한 설정 파일들이 많이 필요하고, 여러 의존성 라이브러리를 명시해야 할 수 있습니다.
②Spring Boot:
-Spring Boot는 스프링 스타터(Starter)라는 개념을 통해, 기본적인 의존성들을 미리 설정해 놓고, 선택만 하면 되게 만들어 주기 때문에 프로젝트 시작이 매우 간편.
-예를 들어, spring-boot-starter-web을 포함시키면, 웹 애플리케이션에 필요한 모든 설정을 자동으로 처리해줌.
- Spring Initializr를 통해 웹 브라우저에서 쉽게 프로젝트를 생성 가능.
(4) 배포 형태
① Spring Framework:
-Spring 애플리케이션은 보통 WAR 파일 형식으로 배포됨. 이 WAR 파일은 웹 서버에서 실행되며, 서버에 배포 후 서비스를 시작해야 함.
②Spring Boot:
- Spring Boot 애플리케이션은 JAR 파일 형식으로 배포. 내장 서버를 사용하기 때문에, JAR 파일 하나로 애플리케이션을 실행할 수 있음.
- java -jar your-app.jar 명령을 통해 독립적인 실행이 가능하고, 이를 클라우드 환경이나 컨테이너에서도 손쉽게 배포할 수 있음.
(5) 설정 파일 및 외부 파일 처리
① Spring Framework:
- Spring은 XML 파일을 통한 설정이나 Java Config 클래스를 많이 사용. 이러한 설정 파일들은 대부분 수동으로 관리됨.
- 또한, 외부 설정 파일(properties, yaml 등)을 읽어들이기 위한 코드가 필요.
② Spring Boot:
- Spring Boot는 application.properties 또는 application.yml 파일을 통해 간단한 설정만으로도 애플리케이션을 설정할 수 있게 도와줌.
- Spring Boot는 설정 파일을 자동으로 감지하고, 추가적인 코드 변경 없이 빠르게 설정을 변경할 수 있음.
(6) 기타 기능들
① Spring Framework:
- Spring은 다양한 하위 프로젝트들을 제공하며, 각 프로젝트가 독립적으로 발전.
- 예를 들어, Spring Security, Spring Data, Spring Batch 등은 별도로 설정하고 연동해야 함.
② Spring Boot:
- Spring Boot는 **"스타터"**라는 기능을 통해, Spring의 다양한 하위 프로젝트들을 자동으로 설정하고 사용할 수 있게 해줌.
- 예를 들어, spring-boot-starter-data-jpa를 추가하면, JPA와 관련된 설정을 자동으로 처리해줌.
특징 | Spring Framework | Spring Boot |
설정 | 복잡하고 수동 설정 필요 | 자동설정 제공 |
애플리케이션 실행 | 외부서버(Tomcat 등)에서 실행 | 내장서버로 독립형 JAR 파일 실행 |
프로젝트 시작 | 설정 및 의존성 수동 추가 | Spring Initializr로 빠르게 시작 가능 |
배포 형태 | WAR 파일 배포 | JAR 파일로 독립 실행 가능 |
기타 | 다양한 서버프로젝트에 대한 개별 설정 필요 | 스타터 기능으로 자동화된 다양한 하위 프로그램 연동 |
'코딩 공부 > Spirngboot' 카테고리의 다른 글
[Data조회과정과 생성과정] (0) | 2025.01.11 |
---|---|
[JPA] 개념 (0) | 2025.01.10 |
[DTO 실습] (0) | 2025.01.10 |
[MVC패턴] 기본 개념 (0) | 2025.01.08 |
[spring initializr] 시작 세팅 (0) | 2024.12.31 |