본문 바로가기
Java Web/Spring Boot

[Spring Boot] 개요

by 스응 2023. 4. 7.
728x90
728x90

스프링 부트 (Spring Boot)

  - 자바 기반의 오픈 소스 프레임워크

  - 스프링 기반 애플리케이션 개발을 단순화하고 빠르게 할 수 있게 만든 도구

 

#  특징

  1) 개발 프로세스 간소화

      - 자동 설정

      - 내장 서버

          : 따로 다운로드받지 않아도 사용 가능한 서버가 내장되어 있음

          · 2.x.x 버전까지는 tomcat / 3.x.x 버전부터는 jetty

      - 의존성 관리

          : 어떤 tool을 사용할지 기술하기만 하면 자동으로 HTTP 통신으로 받아옴

            (기존처럼 따로 다운받아서 등록하지 않아도 됨)

      - 개발자들이 빠르게 프로젝트를 시작할 수 있게 도움

      - 환경 설정 간소화

 

  2) 관례에 따른 설정 원칙

      - 개발자가 지정하지 않은 경우에도 기본 설정을 자동으로 적용

 

  3) 독립 실행 가능한 애플리케이션

      - 내장된 웹 서버를 포함하고 있음 → 독립 실행 가능

 

  4) 높은 확장성

      - 다양한 스프링 모듈과 서드파티 라이브러리를 통합할 수 있음

      - 서드파티 라이브러리 

          : 제작사가 아닌, 제 3자 (외부의 다른 업체)가 개발한 라이브러리

      - 모듈 단위로 많은 기능들을 제공함

          → 필요한 모듈들만 선택해서 프로그램 개발 가능

          ex) 스프링 부트, 스프링 클라우드, 스프링 배치, 스프링 데이터, 스프링 시큐리티 등

 

  5) ContentNegotiation

      : Accept 헤더에 따라 응답의 Content-type을 자동으로 결정함

      - 스프링 프레임워크의 ContentNegotiatingViewResolver를 확장하여 구현됨

 

  6) BufferedReader과 BufferedWriter의 기능을 아주 쉽게 사용할 수 있음

 

 


Spring의 핵심 개념

  ① IoC / DI : 의존 관계 주입

      - https://young0105.tistory.com/189

  ② AOP : 관점 중심 프로그래밍

      - https://young0105.tistory.com/192

  ③ PSA : 이식 가능한 추상화 (모듈화)

 

 


스프링 이니셜라이저

  - 스프링 부트 애플리케이션을 빠르게 생성하기 위한 온라인 도구

  - 다양한 설정 옵션을 선택하여 초기 프로젝트 구조를 생성할 수 있음

  - 다양한 의존성을 선택 및 추가할 수 있음

  - 매우 간편하게 초기 설정을 구성할 수 있음

 

Gradle

  - JVM 기반 프로젝트를 위한 빌드 자동화 시스템

  - Groovy 기반 DSL을 사용하여 빌드 스크립트를 작성할 수 있음

  - Maven과 유사하지만, 보다 유연하고 확장 가능한 구조

      · 다양한 플러그인을 통해 손쉽게 추가 기능 확장 가능

  - 각각의 프로젝트에 대한 의존성 관리, 테스트, 빌드, 패키징, 배포 등을 자동화할 수 있음

  - 멀티 프로젝트 지원

      : 여러 개의 하위 프로젝트를 하나의 빌드 스크립트에서 관리할 수 있음

# 도메인 특화 언어 (DSL, Domain-Specific Languages)

    : 관련 특정 분야에 최적화된 프로그래밍 언어

    · 해당 분야 or 도메인의 개념과 규칙을 사용함 (도메인 : 범주화되어 있는 언어)

 

메세지 컨버터 (Message Converter)

  - HTTP 요청과 응답 본문의 데이터를 객체로 변환하거나, 객체를 데이터로 변환하는 컴포넌트

  - 번역기 역할

 

 

반응형
728x90

빌드 도구

#  Maven

  - 모든 라이브러리를 관리하는 중앙 저장소

  - pom.xml 파일에 xml 형식으로 기술해두면 라이브러리들이 자동으로 다운로드됨 

#  Gradle 

  - build.gradle 파일에 기술해두면 라이브러리들이 자동으로 다운로드됨

  - 사용자 > USERNAME > .m2 > repository 폴더에 라이브러리가 들어옴

 

 


  - 서버 프로그램에서는 상태 값을 변경할 수 있는 리터럴 값을 사용하는 것은 가급적 지양하는 것이 좋음

      → 자주 사용하는 문자열은 따로 상수로 선언해서 클래스에 모아두자.

  - 동일한 의미의 alert 메세지도 동일한 문자열을 반환하도록 선언해두면 좋음

 

#  클래스 생성

1
2
3
4
5
6
7
public class Define {
 
    // final : 상수
    // static : 객체를 생성하지 않아도 클래스명으로 접근해서 멤버 변수 사용 가능
    public final static String PRINCIPAL = "principal";
    
}
cs

#  활용

1
2
3
4
5
// 기존
User principal = (User) session.getAttribute("principal");
 
// 상수 사용
User principal = (User) session.getAttribute(Define.PRINCIPAL);
cs

 

 


기타 메모

- application.properties : web.xml 파일처럼 설정하는 파일
    → 포트 번호 설정 : server.port=8080
- POJO (Plain Old Java Object) : 순수 자바 코드

 

320x100
반응형

댓글