Spring boot
Spring MVC의 문제점
- 다양한 모듈들읠 설정을 적용해야 함
- 클라이언트가 구현 코드에 직접적으로 접근하게 하지 않고 인터페이스를 통해 접근할 수 있도록 하는 방법은 좋은 방법
- 하지만 설정해야 할 일이 많아 실제로 구현해야 하는 비즈니스 로직과는 무관한 설정 오류 때문에 시간 허비
- 이를 해결하기 위해 spring boot가 만들어짐
- 처음 스프링은 본래 웹을 위해 마든 프레임 워크가 아님
- 즉, 웹을 위한 스프링 MVC를 이용하려면 추가 설정이 필요
Spring boot project layout
빌드 결과 파일 포맷에 따른 폴더 규격 구분
- 결과 파일 포맷
- JAR
- 로컬에서 실행
- WAR
- 웹 애플리케이션 컨테이너에서 실행
- 웹 페이지에서 보여 줘야 하는 정적 자원들과 자바 클래스들이 WEB-INF 폴더를 기주느로 클래스 폴더들이 위치함스프링 부트에서 웹 자원들을 실행하기 위한 규약
- JAR
- 정적 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
- 설정임을 나타내는 어노테이션
- @ComponentScan
- @Configuration과 @EnableAutoConfiguration, @ComponentScan 세 가지의 어노테이션의 역할을 합침
'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 |
최근댓글