[Spring]spring과 spring boot

2025. 9. 16. 09:25·cs/dev
728x90

spring / spring boot 차이점

spring: 자바 기반 웹 프레임워크
웹 개발에 필요한 모든 기능을 제공하지마 설정이 많고 복잡
ex) XML설정, 톰캣 설치

spring boot: spring을 쉽게 쓰게 만든 (편의)도구
설정은 최소로 개발은 빠르게
ex)@SpringBootApplication, 의존성 관리, 내장 톰캣, 자동 설정까지 해줍니다.

spring

스프링 프레이임워크(spring Framework)

자바에서 가장 많이 사용되는 프레임워크

의존성주임(DI, Dependeny Injection)과 제어역전(IOC, Inversion of Control), 관점 지향 프로그래밍(AOP)이 가장 중요한 요소

위 요소들을 통해 느슨한 결합(Loose Couping)을 달성할 수 있음

위와 같이 느슨한 결합으로 개발한 어플리케이션은 단위 테스트를 수행하기 용이함

 

의존성 주입 (DI, Dependency Injection)

예제 코드

예제 코드와 같이 DI를 사용하지 않은 코드의 경우

- Controller는 'MyService'객체에 의존하게 됨

- 예제 코드처럼 객체의 인스턴스를 얻게 되면 객체 간의 결합도가 올라감

- 이런 코드 작성은 단위테스트를 위해 Mock 객체를 사용할 수 없게 됨

예제 코드

예제 코드와 같이 DI를 사용하는 코드의 경우

- @Service, @Autowired 어노테이션을 통해 MyService의 인스턴스를 획득

- 위와 같이 코드를 작성하면 단위테스트 상황에서 Service객체를 Mock 객체로 대체하여 쉽게 테스트화할 수 있음

 

관점 지향 프로그래밍 (AOP, Aspect Oriented Programming)

스프링 프레임워크에서 제공하는 강력한 기능 중 하나

AOP는 쉽게 말해, OOP를 보완하는 수단으로, 여러 곳에 쓰이는 공통 기능을 모듈화하여 필요한 곳에 연결함으로써 유지보수 또는 재사용에 용이하도록 하는 것을 의미

AOP를 통해 기존 프로젝트에 다양한 기능을 로직 수정 없이 추가할 수 있음

이런 개발 방식을 통해 결합도를 낮춘 개발이 가능함

*알아보면 좋은 것: 프록시 디자인 패턴, 핵심적인 관점, 부가적인 관점, 흩어진 관심사(Crosscutting Concerns)

 

스프링프레임워크의 대표적인 모듈

스피링 프레임워크는 다양한 기능이 존재

그 기능들은 약 20개의 모듈로 구성되어 있음

많이 사용되는 대표적인 모듈

- Spring JDBC

- Spring MVC
- Spring AOp

- Spring ORM

- Spring Test

- Spring Expression Language(SpEL)

 

스프링 부트가 나오게 된 이유

공식 사이트에 나와있는 글 인용

Spring Boot makes it easy to create stand-alone, production-grade Spring based Applications that you can "just run".

스프링 부트는 단지 실행만 하면 되는 스프링 기반의 어플리케이션을 쉽게 만들 수 있다.

 

스프링은 다양한 기능을 제공하고 있지만, 그 기능을 사용하기 위한 설정에 많은 시간이 걸림

예) Transaction Manager, Hibernate Datasource, Entity Manager, Session Factory 등

Hibernate 관련 spring 설정

spring boot

스프링 부트가 제공하는 기능

1. 스프링 부트는 자동설정(AutoConfiguartion)을 이용

- 어플리케이션 개발에 필요한 모든 디펜던시(Dependeny)를 프레임워크에서 관리

- jar파일이 클래스 패스에 있는 경우 스프링 부트는 Dispatcher Servelet으로 자동 구성됨

- xml 설정 없이 자바 코드를 통해 설정할 수 있음

 

어플리케이션을 개발하면서 사용되는 디펜던시들은 호환되는 버전으로 관리해줘야 함

- 이런 복잡도를 줄이기 위해 스프링 부트는 SpringBoot-Starter를 제공하여 자동으로 호환되는 버전을 관리

 

2. 모니터링 관리를 위한 스프링 액추에이터(Spring Actuator)제공

- 서비스가 정상적으로 동작하는지 상태 모니터링 기능 제공

- 서비스 액추에이터는 스프링 부트에서 제공하는 상태 정보를 보다 쉽게 모니터링할 수 있게 기능을 제공

 

스프링 부트 프로젝트의 의존성 관리

spring boot starter dependency를 통해 다양한 패키지를 수용하고 있음

이를 통해 개발자는 dependecy 관리(호환성 체크 등)에 대해 고려할 필요가 없어짐

 

스프링 부트 프로젝트의 starter 디펜던시

spring-boot-starter-web-service : SOAP 웹 서비스

spring-boot-starter-web: RESTful 응용 프로그램

spring-boot-starter-test: 단위 테스트, 통합 테스트

spring-boot-starter-jdbc: 기본적인 JDBC

spring-boot-starter-security: 스프링 시큐리티(인증, 권한)

spring-boot-starter-data-jpa: Spring Data JPA(Hibernate)

spring-boot-starter-cache: 캐시

 

 

check)

1. spring 특징에 대해 말해보세요.

2. loC, DI란?

 

출처: Around Hub Studio '스프링'과 '스프링 부트'의 차이 [ 스프링 부트 (Spring Boot) ]

https://www.youtube.com/watch?v=YSsl5-q2BR4

 

728x90
반응형

'cs > dev' 카테고리의 다른 글

[CS]클래스와 객체, 인스턴스의 차이가 뭔가요?  (0) 2025.09.16
[CS]OOP의 4가지 특징  (0) 2025.09.16
[Spring]JPA란 무엇인가요? (ORM, SQL Mapper)  (0) 2025.09.16
[CS]프로시저란 무엇인가요?  (0) 2025.09.14
[CS]제대로 이해하는 REST API  (0) 2025.09.14
'cs/dev' 카테고리의 다른 글
  • [CS]클래스와 객체, 인스턴스의 차이가 뭔가요?
  • [CS]OOP의 4가지 특징
  • [Spring]JPA란 무엇인가요? (ORM, SQL Mapper)
  • [CS]프로시저란 무엇인가요?
lakedata
lakedata
lakedata 님의 블로그 입니다.
  • lakedata
    lakedata 님의 블로그
    lakedata
  • 전체
    오늘
    어제
    • 분류 전체보기 (188)
      • cs (82)
        • dev (28)
        • sec (29)
        • ops (25)
      • 자격증 (32)
        • 정보처리기사 (20)
        • 정보보안기사 (1)
        • aws dva (6)
        • aws dop (2)
      • IT서적 (27)
        • 클린아키텍처 (10)
        • 객체지향의사실과오해 (7)
        • 오브젝트 (10)
      • 코테 (42)
        • 알고리즘 (20)
        • 백준 (13)
        • 프로그래머스 (7)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • github
  • 공지사항

  • 인기 글

  • 태그

    Spring
    SQL
    알고리즘
    CS
    AWS
    Java
    docker
    Security
  • 최근 댓글

  • 최근 글

  • 반응형
    250x250
  • hELLO· Designed By정상우.v4.10.3
lakedata
[Spring]spring과 spring boot
상단으로

티스토리툴바