Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Tags more
Archives
Today
Total
관리 메뉴

홍태

스프링과 스프링 부트 본문

J4VA

스프링과 스프링 부트

홍EH 2023. 7. 27. 13:51
  •  스프링(spring)이란?
    '스프링 프레임워크(Spring Framework)'라고 하는데
    스프링 프레임워크(Spring Framework)는 자바에서 가장 많이 사용되는 프레임워크로


    의존성 주입 (Dependency Injection - DI):
    객체들 간의 의존 관계를 느슨하게 만들어 유연한 애플리케이션을 개발할 수 있도록 해주고 객체가 직접 의존하는 객체를 생성하지 않고 외부에서 주입받게 됩니다

    IoC 컨테이너 (Inversion of Control Container):

    스프링이 객체의 생명주기를 관리하고, 의존성을 해결하는 핵심이고 ApplicationContext 인터페이스가 IoC 컨테이너의 구현체입니다.

    빈 (Bean):

    스프링에서 관리되는 객체를 의미합니다. 빈은 IoC 컨테이너에 의해 생성, 관리되며, 빈의 생명주기를 관리합니다.

    AOP (Aspect-Oriented Programming):
    관점 지향 프로그래밍을 지원하고 핵심 로직에서 공통적으로 발생하는 부가 기능들을 분리하여 모듈화할 수 있습니다.

    MVC (Model-View-Controller):

    애플리케이션을 Model(데이터), View(사용자 인터페이스), Controller(비즈니스 로직)로 나누어 구성하는 디자인 패턴입니다.

    스프링 모듈 (Spring Modules):
    스프링은 여러 개의 모듈로 구성되어 있습니다. 예를 들어, 스프링 코어, 스프링 AOP, 스프링 ORM 등이 있습니다.

    스프링 데이터 액세스/통합 (Spring Data Access/Integration):
    데이터베이스 액세스나 다른 서비스와의 통합을 위한 기능을 제공합니다. JDBC, ORM (Hibernate, JPA) 등을 지원합니다.

    트랜잭션 관리 (Transaction Management):

    데이터베이스 트랜잭션을 처리하고 관리하는 기능을 제공합니다. 스프링은 선언적 트랜잭션 처리를 지원합니다.

    스프링 시큐리티 (Spring Security):
    인증과 권한 부여를 담당하는 스프링 하위 프로젝트입니다. 보안 기능을 제공합니다.

    스프링 부트 (Spring Boot):
    스프링 애플리케이션을 빠르게 개발하고 배포하기 위한 프레임워크로, 설정이 간소화되어 있습니다. 내장 서버를 제공하여 별도의 서버 설치가 필요하지 않습니다.

    스프링 클라우드 (Spring Cloud):
    분산 시스템을 위한 마이크로서비스 아키텍처를 지원하는 프레임워크입니다. 여러 클라우드 환경에서의 애플리케이션 개발과 배포를 간소화합니다.

    JPA (Java Persistence API):
    자바 객체와 데이터베이스 간의 매핑을 위한 API로, 스프링에서 JPA를 이용하여 ORM을 사용할 수 있습니다.

    Spring Boot Starter:
    프로젝트에 필요한 의존성을 한꺼번에 가져오기 위한 라이브러리의 집합입니다. 예를 들어, 웹 애플리케이션을 개발할 때는 spring-boot-starter-web를 사용합니다.

    Spring Boot Actuator:
    애플리케이션의 상태를 모니터링하고 관리하기 위한 기능을 제공합니다. 예를 들어, 서버의 상태, 메모리 사용량 등을 확인할 수 있습니다.

    Spring Boot DevTools:

    개발자 도구로서, 애플리케이션의 빠른 개발 및 반복적인 테스트를 지원합니다.

등 여러가지 모듈과 특징들이 있습니다.


다음은 스프링 부트 특징입니다.

 

  • 스프링 부트가 나오게 된 이유?
    → 스프링(Spring) 을 통해 웹 애플리케이션을 실행시키기 전까지의 많은 환경 설정을 자동화 하여
    발자가 편하게 Spring 사용하도록 도와주기 위해 등장

스프링 부트 프로젝트 (Spring Boot Project):
스프링 부트를 이용하여 개발하는 프로젝트를 말하는데 스프링 부트 프로젝트는 메이븐 또는 그레이들과 같은 빌드 도구를 사용합니다.


스프링 이니셜라이저 (Spring Initializr):
스프링 부트 프로젝트를 쉽게 시작할 수 있도록 제공하는 온라인 도구입니다. 필요한 기술 스택과 설정을 선택하여 프로젝트를 초기화할 수 있습니다.


스프링 부트 스타터 (Spring Boot Starter):
프로젝트에 필요한 의존성을 한번에 가져오기 위한 라이브러리의 집합입니다. 예를 들어, spring-boot-starter-web은 웹 애플리케이션을 개발할 때 필요한 의존성들을 포함합니다.


내장 서버 (Embedded Server):
스프링 부트가 기본적으로 내장하고 있는 서버입니다. 주로 Tomcat, Jetty, Undertow과 같은 서버를 내장하여 별도의 서버 설치 없이 애플리케이션을 실행할 수 있습니다.


자동 설정 (Auto Configuration):
프로젝트의 종속성을 분석하고, 필요한 설정을 자동으로 구성해주는 기능입니다. 개발자가 별도의 설정을 하지 않아도 프로젝트가 동작할 수 있도록 도와줍니다.

스프링 부트 액추에이터 (Spring Boot Actuator):
애플리케이션의 상태를 모니터링하고 관리하기 위한 기능을 제공합니다. 예를 들어, 서버의 상태, 메모리 사용량, 요청 통계 등을 확인할 수 있습니다.


스프링 부트 데브툴즈 (Spring Boot DevTools):
개발자 도구로서, 애플리케이션의 빠른 개발 및 반복적인 테스트를 지원합니다. 코드의 변경 사항을 실시간으로 반영할 수 있습니다.

스프링 부트 어플리케이션 클래스 (Spring Boot Application Class):
스프링 부트 애플리케이션의 시작점으로, 주로 main 메소드가 포함된 클래스입니다.

외부 설정 (External Configuration):
애플리케이션의 설정 정보를 외부에 저장하고 관리할 수 있도록 해줍니다. application.properties 또는 application.yml 파일을 이용하여 설정을 구성할 수 있습니다.

데이터베이스 자동 설정 (Database Auto Configuration):
스프링 부트는 데이터베이스 연동을 위한 설정을 자동으로 처리해주며, 내장 데이터베이스(H2 등)의 경우 별도의 설정 없이 사용할 수 있습니다.


Spring Boot CLI (Command Line Interface):
명령 줄에서 스프링 부트 애플리케이션을 빠르게 개발하고 실행할 수 있는 도구입니다.

Spring Boot Test:

스프링 부트에서 테스트를 작성하고 실행하기 위한 기능을 제공합니다. @SpringBootTest 등의 애노테이션을 사용하여 테스트를 구성할 수 있습니다.


Spring Boot Maven 플러그인 (Spring Boot Maven Plugin):
메이븐 빌드 도구와 통합하여 스프링 부트 애플리케이션을 빌드하고 실행할 수 있는 기능을 제공합니다.

Spring Boot Gradle 플러그인 (Spring Boot Gradle Plugin):
그레이들 빌드 도구와 통합하여 스프링 부트 애플리케이션을 빌드하고 실행할 수 있는 기능을 제공합니다.