SparkFramework와 SpringBoot의 HelloWorld 비교

가벼운 자바 웹 프레임 워크의 SparkFramework와 개발에 필요한 기능을 풍부하게 제공하는 SpringBoot에서 HelloWorld 프로젝트를 만들고 느낀 것을 비교해 보았습니다.

전제


  • spark-core 2.8.0
  • Springboot-starter 2.1.2

  • SparkFramework에서 HelloWorld 절차


  • eclipse에서 File → New Gradle Project에서 적절한 이름으로 Gradle 프로젝트를 만듭니다
  • build.gradle 를 편집합니다.

  • build.gradle
    dependencies {
        compile 'com.sparkjava:spark-core:2.8.0'
        // Sparkのログ出力に必要なライブラリ
        compile group: 'org.slf4j', name: 'slf4j-log4j12', version: '1.7.25'
    }
    
  • 메인 클래스를 만듭니다.

  • SparkApplication
    package spark.sample;
    
    import static spark.Spark.get;
    /*
     * This Java source file was generated by the Gradle 'init' task.
     */
    public class SparkApplication {
        public static void main(String[] args) {
            get("/", (req, res) -> {
                return "HelloWorld Spark";
            });
        }
    }
    
  • log4j 설정 파일을 src/main/resources에 넣습니다.

    log4j.properties
    
    log4j.rootCategory=INFO, console
    log4j.appender.console=org.apache.log4j.ConsoleAppender
    log4j.appender.console.target=System.err
    log4j.appender.console.layout=org.apache.log4j.PatternLayout
    log4j.appender.console.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{1}: %m%n
    

    이것으로 Spark에서 HelloWorld를 실행하는 구현이 완료되었습니다.
    main 클래스를 실행하면 내장된 jetty가 시작됩니다.


  • 브라우저에서 확인
  • 시동 시간: 약 590ms
  • 요청 당 응답 시간 : 약 7ms

  • SpringBoot에서 HelloWorld 절차


  • Spring Initializr 으로 병아리를 만들고 zip을 다운로드합니다.
  • 방금 다운로드 한 zip을 확장하고 eclipse에서 File → Import → Exisiting Gradle Project로 가져옵니다.
  • Controller 클래스를 만듭니다.

  • SampleController
    package spring.sample.sample;
    
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    @RestController
    public class SampleController {
    
        @GetMapping("/")
        public String index() {
            return "HelloWorld SpringBoot";
        }
    }
    

    이것으로 Spring에서 HelloWorld를 실행하는 구현이 완료되었습니다.
    SpringBootApp에서 실행하면 내장 tomcat이 시작됩니다.


  • 브라우저에서 확인
  • 시동 시간: 약 6s

  • 요청 당 응답 시간: 약 12ms
  • 기본적으로 favicon.ico를 얻기 때문에 Spark와 거의 다르지 않습니다.


  • 감상



    SparkFramework와 SpringBoot를 비교해보십시오.


  • SpringBoot에 비해 장점
  • 복잡한 처리가 없으면 Spring보다 빠르게 개발이 진행될 것 같다.
  • java8의 람다 기법조차 알면 개발이 시작됩니다
  • 종속 모듈이 적고 경량

  • SpringBoot에 비해 단점
  • MVC 패턴을 강제하는 등 좋은 의미에서의 프레임 워크에 의한 강제가 없기 때문에, 마음껏 쓸 수 있다는 의미에서는 대규모 개발에 적합하지 않을지도
  • 엔터프라이즈 웹 앱에 필요한 기능이 전체 세트가 아니기 때문에, 스스로 구현 or 기술 선정이 필요


  • SpringBoot로 작성한 앱에서는 프레임워크 측에서 작성되는 객체가 발생하기 때문에 순수한 java로 구현한 앱에 비해 처리 속도가 느려진다는 이야기를 듣고 보다 가벼운 웹 프레임 작업이 없을까 생각하고 Spark 프레임 워크를 찾아서 시도했습니다.

    간단한 비즈니스 로직을 구현해 보시고, 알고 있으면 다시 게시하려고 합니다.

    좋은 웹페이지 즐겨찾기