Spring boot 구성 요소

오븐·2023년 7월 12일

빠른 스프링 개발을 도와주는 애플리케이션. 구성에 시간이 별로 들지 않는다!
이 글에서는 Spring boot를 구성하는 것들을 짧게 훑고 간다. 대부분 스프링 공식문서를 참고한다.

시스템

Maven, Gradle이 있는데 둘 다 빌드, 라이브러리 관리 도구이다.

  • Maven은 라이브러리 연동 관리와 특유의 사이클이 있다.
  • Gradle은 Groovy 스크립트 기반이어서 함수 등이 사용이 가능하다.
    Gradle이 먼저 나온만큼 성능이 빠르고 글이 길어질 경우 가독성이 좋다. 스프링 부트에서는 실행가능 jar파일 생성과 의존 선언을 간단하게 할 수 있는 플러그인을 제공한다.

서블릿

서블릿이 뭔데?

자바 기반 웹 서버, 애플리케이션 서버에서 사용하는 클래스다. 웹서버의 객체를 다루고, 외부 요구 처리하고, 응답을 던지고, 다시 웹서버로 답을 보낸다.
처리 과정
출처: https://www.geeksforgeeks.org/introduction-java-servlets/

위와 같이 서버와 클라이언트 사이 중간 역할을 한다.

build.gradle

plugins {
	id 'java'
	id 'org.springframework.boot' version '3.1.1'
	id 'io.spring.dependency-management' version '1.1.0'
}

group = 'com.spring-1'
version = '0.0.1-SNAPSHOT'

java {
	sourceCompatibility = '17'
}

repositories {
	mavenCentral()
}

dependencies {
	implementation 'org.springframework.boot:spring-boot-starter'
	testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

tasks.named('test') {
	useJUnitPlatform()
}
  • plugins: 종속성 관리, 실행가능한 jar 파일 생성, 실행 등을 함. 빌딩을 하면 플러그인대로 실행가능한 .jar파일을 구성한다.
    apply plugin: 'io.spring.dependency-management'을 통해 메이븐처럼 종속성 관리를 사용할 수 있다고 한다
  • group: 해당 프로젝트 그룹명
  • version: 해당 프로젝트 출시 버전
  • java-sourceCompatibility: 컴파일할 때 사용하는 자바 버전
  • repositories: 의존성을 어떤 원격 저장소에서 받을지. jcenter()도 있다.
  • dependencies: 의존성. 라이브러리
  • Junit: 자바 프로그래밍용 단위 테스트를 할 수 있는 프레임워크.
tasks.named('test') {
	useJUnitPlatform()
}
  • 해당 코드는 Junit기반 플랫폼으로 테스트를 실행한다.

main.java

package com.spring1.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class DemoApplication {

	public static void main(String[] args) {
		SpringApplication.run(DemoApplication.class, args);
	}

}
  • @SpringBootApplication: 기본 탐색 패키지를 정의한다고 한다. 예로 JPA 애플리케이션을 작성하면 @SpringBootApplication을 단 클래스가 @Entitiy를 탐색한다.

구성 클래스 Configuration Classes

  • XML 파일을 통해 구성이 가능하지만, 공식 문서에는 @Configuration 클래스를 통해 구성하는 걸 권장한다.
  • @ComponentScan을 통해서 관련 클래스들을 사용할 수 있다. 사용하면 @Component나 @Service 같은 것들이 자동으로 beans으로 등록된다.
// Same as @SpringBootConfiguration @EnableAutoConfiguration @ComponentScan
@SpringBootApplication
public class MyApplication {

    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class, args);
    }

}

Test

@RestController
@SpringBootApplication
public class MyApplication {

    @RequestMapping("/")
    String home() {
        return "Hello World!";
    }

    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class, args);
    }

}
  • @RestController: @Controller+@Responsebody. 호출자에게 값을 반환
  • @RequestMapping: 라우팅 정보 제공. /로 시작하는 http는 home 메서드로 매핑=대응된다.
profile
하루에 한번 정권 찌르기

0개의 댓글