Spring Boot

WebStudy/Spring / / 2021. 7. 16. 18:14

Spring boot

Spring MVC의 문제점

  • 다양한 모듈들읠 설정을 적용해야 함
    • 클라이언트가 구현 코드에 직접적으로 접근하게 하지 않고 인터페이스를 통해 접근할 수 있도록 하는 방법은 좋은 방법
    • 하지만 설정해야 할 일이 많아 실제로 구현해야 하는 비즈니스 로직과는 무관한 설정 오류 때문에 시간 허비
    • 이를 해결하기 위해 spring boot가 만들어짐
  • 처음 스프링은 본래 웹을 위해 마든 프레임 워크가 아님
    • 즉, 웹을 위한 스프링 MVC를 이용하려면 추가 설정이 필요

Spring boot project layout

빌드 결과 파일 포맷에 따른 폴더 규격 구분

  • 결과 파일 포맷
    • JAR
      • 로컬에서 실행
    • WAR
      • 웹 애플리케이션 컨테이너에서 실행
      • 웹 페이지에서 보여 줘야 하는 정적 자원들과 자바 클래스들이 WEB-INF 폴더를 기주느로 클래스 폴더들이 위치함스프링 부트에서 웹 자원들을 실행하기 위한 규약
  • 정적 html 파일
    • src/main/resources/static
    • src/main/public
  • 웹 페이지 대표 아이콘
    • src/main/resources/favicon.ico
  • 템플릿
    • src/main/resources/templates

webJAR을 이용한 외부 프론트엔드 라이브러리 관리

  • JS 라이브러리들은 웹 페이지상에 추가해서 사용
    • 일괄적으로 관리하기 어려움
  • webJAR을 이용하면 다른 서버측 라이브러리들처럼 jar 형태로 메이븐이나 그래들을 이용해서 관리 가능

Spring boot 실행

spring-boot-cli

  • 스프링 부트 명령 실행 도구
  • 다운 링크
  • 경로 설정 필수
    • bin 폴더를 기준으로 한다.
  • 실행
    • test.groovy를 만들어서 실행
    • spring run test.groovy
@RestController
class App{
    @RequestMapping("/")
    def home(){
        "hello, World"
    }
}

gradle을 이용한 스프링 부트 설정

  • 기존 프로젝트들은 메이븐이나 그래들 같은 빌드도구를 사용함
  • Build.gradle
    • 스프링 부트 플러그인을 사용할 수 있도록 설정
plugins {
    id 'java'
    id 'org.springframework.boot' version '1.5.8.RELEASE'
}
ext{
    springBootVersion='1.5.8.RELEASE'
}
sourceCompatibility = 1.8
targetCompatibility = 1.8
sourceSets{
    main{
        java {
            srcDir 'src/main/java'
        }
        resources{
            srcDir 'src/resources'
        }
    }
}
repositories {
    jcenter()
}
dependencies {
    compile 'org.springframework.boot:spring-boot-starter-web'
    compile "org.springframework.boot:spring-boot-starter-thymeleaf"
    compile "org.springframework.boot:spring-boot-devtools"

    compile group: 'org.webjars', name: 'webjars-locator', version: '0.32'

    compile 'org.webjars:jquery:3.1.0'
    compile 'org.webjars:bootstrap:3.3.1'
    compile 'org.webjars:materializecss:0.96.0'
    compile 'org.slf4j:slf4j-api:1.7.7'
}
  • 스프링 부트를 사용할 때는 설정을 스프링 부트로 위임, 버전 관리도 스프링 부트에 의해 관리controller를 이용해서 TestingHemeController
    @RestController
    public class HomeController {
      @RequestMapping("/")
      public String hello() {
          return "hello";
      }
    }
  • @RestController
    • 기존ResponseBody 어노테이션과 컨트롤러 어노테이션을 조합해서 만들던 부분을 좀 더 간결하게 사용하기 위한 어노테이션

main

@SpringBootApplication
public class UIMain {
    public static void main(String ar[]){
        SpringApplication.run(UIMain.class, ar);
    }
}
  • 스프링 부트는 기본적으로 WAR이 아닌 JAR 혀애로 동작
    • 따라서, main 메서드를 이용해서 실행
  • @SpringBootApplication
    • @Configuration과 @EnableAutoConfiguration, @ComponentScan 세 가지의 어노테이션의 역할을 합침
      • @ComponentScan
        • 컨트롤러 클래스들을 읽을 수 있도록 스캔 패키지를 지정함
      • @EnableAutoConfiguration
        • 설정들에 소모되는 시간을 단축하기 위한 스프링 부트 제공 서비스
        • 공통적으로 필요한 DispatcherServlet 같은 설정을 어노테이션을 이용해 대신할 수 있도록 함
      • @Configuration
        • 설정임을 나타내는 어노테이션
    •  

'WebStudy > Spring' 카테고리의 다른 글

REST API 1  (0) 2021.07.19
정적 자원 관리와 템플릿 엔진  (0) 2021.07.17
Spring MVC  (0) 2021.07.15
Spring IoC 패턴  (0) 2021.07.14
Servlet 2  (0) 2021.07.12
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기