dev._.note

[SPRING] Springboot 본문

Dev/SPRING

[SPRING] Springboot

Laena 2023. 3. 6. 12:31

Springboot?

Springframework를 기반으로 한 개발플랫폼

Main Contributor : Phill Webb

  • 1.0 : 2014
  • 2.0 : 2018.3.1

기능정의

  • 단독실행 가능한 스프링 어플리케이션 생성
  • 내장 컨테이너로 톰캣, 제티, 언더토우 중에 선택 (Use Jetty instead of Tomcat)
  • Starter를 통해 가능한 간결한 의존성 구성지원
  • 스프링에 대한 자동구성 Auto configuration제공
  • 더이상 xml구성 필요 없음
  • 제품출시(release) 후 운영에 필요한 다양한 기능(상태점검, 모니터링) 제공 (health-check : 주기적으로 어플리케이션 다운여부 확인)

 

구성요소

  • build도구 : maven | gradle
  • 스프링프레임워크 : 4.x | 5.x
  • 스프링부트 1.x | 2.x (1.x는 지원종료)
  • springboot-starter : 의존성

Spring Initializer

http://start.spring.io

 

언어

  • Java
  • Kotlin
  • Groovy

빌드도구

  • gradle : build.gradle
  • maven : pom.xml

Dependencies

  • web
  • lombok
  • jpa : 자바측 orm 지원 hibernate
  • h2

network에서 get방식의 요청이 이루어지는 것 확인.

 

실행파일

  • war : 기존재하는 was서버에 배포
  • jar : executable jar(혹은 war)
    • docker, 쿠버네티스 등에 배포

springboot starter 의존성과 설정을 자동화해주는 모듈.

  • springboot-autoconfigure
  • springboot-dependencies

개발자가 신경써야할 것.

  • springboot 버전
  • 사용하려는 라이브러리의 starter지원여부
  • starter미지원시 라이브러리 등록방법
  1. Autoconfiguration
  2. External Configration : 적용우선순위에 따라 적용
    • 실행인자
    • spring_applicaiton_json
    • 환경변수
    • 기타
    • application.yml, application.properties
    • application-{defaultprofiles}.yml, application={defaultprofiles}.properties

gradle sts에는 기본gradle플러그인을 별도로 설치해야한다.

현재 marketplace에는 3.x버젼만 설치가능. starter project에서 선택할 수 있는건 2.x까지이므로, 사용자 수동설치 요망 Eclipse Buildship: Eclipse Plug-ins for Gradle 2.2.2

설치 Update Site : http://download.eclipse.org/buildship/updates/e48/releases/2.x/2.2.2.v20181003-1024

브라우져에서 다음 url을 넣으면 zip파일 다운로드 가능

http://start.spring.io/starter.zip?
    name=springboot&
    groupId=com.kh&
    artifactId=springboot&version=0.0.1-SNAPSHOT&
    description=Demo+project+for+Spring+Boot&
    packageName=com.kh.springboot&
    type=gradle-project&
    packaging=jar&
    javaVersion=1.8&
    language=java&
    bootVersion=2.1.2.RELEASE&dependencies=lombok&
    dependencies=h2&
    dependencies=data-jpa&
    dependencies=web

인터넷이 가능한 환경에서만 프로젝트 생성가능

@appliction.yml application.properties파일을 사용하지 않음. 확장자 yml로 변경 Ctrl+space통해서 사용가능한 명령어 확인가능.

yml파일 특징 yml? yaml?

  • key-value : : 로 key-value구분. 공백반드시 필요빈객체
  • 들여쓰기로 부모-자식을 구분 spring.main.web-environment은 deprecated
  spring:
    main:
      web-application-type: SERVLET
  # OpenType - WebApplicatoinType클래스에 enum중에 선택가능.

  server:
    port: 9999

프로젝트 root directory에서 build하기 (gradlewrapper.jar파일에 의해서 build됨)

  • 윈도우 : gradlew.bat build
  • 리눅스 : gradlew build

build/libs/springboot-0.0.1-SNAPSHOT.jar파일 생성 이때, 결과물은 실행관련라이브러리 모두 포함된 fat.jar이다.

이를 압축해제해서 내용물 확인 unzip springboot-0.0.1-SNAPSHOT.jar

@META-INF/MANIFEST.MF

  • 버젼
  • 실행클래스 및 실행메소드 정의
  • Manifest-Version: 1.0 Start-Class: com.kh.springboot.SpringbootApplication Main-Class: org.springframework.boot.loader.JarLauncher

배너변경하기 커스텀배너를 사용할 수 있다. Using Custom Banners in Spring Boot 커스텀배너 제작 사이트

src/main/resources/banner.txt파일로 저장할 것. build시에 자동으로 파일을 참조.

  • @Configuration + @Bean : 외부라이브러리등을 빈등록시.
  • @Component : 개발자가 직접 작성한 클래스 빈등록시

DI 방법

  • 생성자 주입(권장) : 생성자 하나일 것. @Autowired 불필요
  • setter주입 @Autowired
  • 필드 선언 : @Autowired

Lombok 사용하기 최초 설치 필요함. lombook.jar를 실행해야함: cmd C:\\dev\\sts\\sts-3.9.5.RELEASE\\sts-3.9.5.RELEASE>java -jar lombok.jar 최초실행시 STS.exe에 대해 바인딩함.(STS.ini와 실행파일 경로에 lombok.jar복사됨.) Lombok is not generating getter and setter

restart하지 말고, 재실행

 

배포

  • AWS
  • MS Azure
  • GCP Google Cloud Platform
  • 비즈팩

'Dev > SPRING' 카테고리의 다른 글

[SPRING] Spring Security Filter  (0) 2023.03.03
[SPRING] AOP(Aspect Oriented Programming) 관점 지향 프로그래밍  (0) 2023.02.27
[SPRING] 스프링 개요  (1) 2023.02.26
[SPRING] Transaction 선언  (0) 2023.02.25