Spring boot 정리

Spring Boot 정리

회사에서 Java & Scala로 개발을 하고있지만 실제로 쓰고 있는 Spring 기능은 10%도 안쓰는거같다. 그래서 실력향상을 도모하고자 Spring-boot를 따로 공부하기로 했다.

해당 시리즈의 내용은 swchoi.log 블로그를 참고해서 작성되었다.

1. Spring boot 아키텍쳐

출처

  • Controller layer : UI에서 요청을 받고 응답을 전달한다.
  • Service layer : 비즈니스 로직을 구현한다.
  • Repository layer : 데이터베이스에서 가져올 쿼리를 구현. JPA를 이용하는 경우 정해진 규칙에 따라서 메소드를 사용하거나, 만들어놓으면 적절한 쿼리를 수행할 수 있다.
  • Domain layer : 실제로 DB 물리 테이블과 1:1 맵핑되어 바인딩 되어있다.

Controller 에서는 Service 를 호출해서 받은 결과를 UI 에 전달한다. [Service -> Repository -> Domain] 처럼 각각 관련 있는 클래스를 호출하도록 설계한다. Service 가 또 다른 Service 를 호출하지 않도록 주의하고, Service 에서 필요한 Repository 에 접근하여, 데이터를 가져올 수 있도록 해야 한다.

2. Spring 프로젝트 생성

  • 준비물

    1. Intellj
    2. Java8
    3. Gradle 7.1
  1. Intellj로 Gradle project 생성

    • New Project > Gradle > Java 를 선택 후 Next를 클릭

    • Project 이름을 지정하고 저장. (나의 경우 Test Blog에서 T만 따와 TBlog라고 지어주었다.)

  2. Gradle 변경

    • 초기 설정 값

      plugins {
          id 'java'
      }
      
      group 'org.example'
      version '1.0-SNAPSHOT'
      
      repositories {
          mavenCentral()
      }
      
      dependencies {
          testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.1'
          testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.8.1'
      }
      
      test {
          useJUnitPlatform()
      }
    • Spring 설정 값

      buildscript {
          ext {
              springBootVersion = '2.1.7.RELEASE' // 전역 변수 설정
          }
          repositories {
              mavenCentral() // 의존성을 어디에서 다운받을것이냐
          }
      
          dependencies {
              classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
          }
      }
      
      /*---------------------spring 필수 plugin-----------------------*/
      apply plugin : 'java'
      apply plugin : 'eclipse'
      apply plugin : 'org.springframework.boot'
      apply plugin : 'io.spring.dependency-management' // 의존성 관리 plugin
      /*---------------------spring 필수 plugin-----------------------*/
      
      
      group 'com.test.blog'
      version '1.0-SNAPSHOT'
      sourceCompatibility = 1.8
      
      repositories {
          mavenCentral()
      }
      // Gradle 7버전에서는 implementation 사용
      dependencies {
          implementation('org.springframework.boot:spring-boot-starter-web')
          testImplementation('org.springframework.boot:spring-boot-starter-test')
      }
    • 설정된 Gradle을 리로드 하고싶다면 Intellj 우측의 Gradle > [프로젝트 이름] > 우클릭 > Reload Gradle Project 를 해주면 된다.

  3. Main Class 만들기

    • Main class (주의해야할 점은 꼭 패키지를 만들고 Main 클래스를 만들자. com.test.blog 이런식으로! 안그러면 오류가 난다.)
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    
    @SpringBootApplication
    public class TBlogMainApplication {
        public static void main(String[] args) {
            SpringApplication.run(TBlogMainApplication.class, args);
        }
    }
    • @SpringBootApplication : Spring boot는 Main 메소드가 선언된 클래스를 기준으로 실행. 해당 어노테이션은 Spring boot를 실행하는데에 필요한 가장 기본적인 설정이 담겨있음.
    • SpringApplication.run 메소드 : 내장 WAS(Web Application Service)를 실행해주는 메소드. Spring boot는 하나의 Jar 파일에 tomcat을 내장하고 있어서 서버에 별도로 Tomcat을 설치하지 않아도 된다.
    • 설정 후 실행하면 8080 포트로 Spring이 실행된다.

좋은 웹페이지 즐겨찾기