Javalin 프레임워크 시작해보기

 



보통 Java 웹프레임워크로 SpringBoot 을 많이 사용하는데, 개인적으로 쓸데없이 번잡스러워서 싫어한다. 다른 언어에서도 그렇지만, 간단하고 가벼운 프레임워크를 선호합니다. Javalin 은 이에 부합하는 아주 좋은 경량 프레임워크 입니다. 우리나라에서는 사용하는 곳을 본적이 없습니다. Javalin은 꽤 활발하게 개발되고 있는 프로젝트여서 운영에 사용해도 무방합니다. https://javalin.io 에 들어가서 한 번 구경해보세요.

 

기본적으로 JDK와 gradle 이 설치되어 있는 상태여야 합니다. JDK와 gradle 설치는 https://gauryan.blogspot.com/2024/09/windows-11-jdk-21-gradle.html 에서 확인할 수 있습니다.

 

먼저 작업폴더를 만들어줍니다. 저는 C:\work\japi 로 했습니다. 여기에서 gradle init 를 통해서 프로젝트를 생성합니다.


프로젝트 생성 후의 디렉토리 구조는 아래와 같습니다.


이 상태에서 gradle run 으로 실행해보면, 아래와 같이 Hello World! 가 찍히는 것을 확인할 수 있다.


App.java 를 열어보면, 아래와 같은 코드가 있고, 이런식으로 Hello World! 가 출력이 되는 구나... 하고 느낄 것이다.

그런데, App.java 의 디렉토리 구조가 약간 문제가 있다. 지금은 app/src/main/java/org/example 아래에 있는데, 이것을 app/src/main/java/japi 아래로 옮기고, AppTest.java 파일은 삭제하도록 하자. 그리고, build.gradle 파일을 열어서 mainClass 항목을 아래와 같이 변경한다.


최종 폴더구조는 아래와 같이 될 것이다. 이 상태에서도 gradle run 하면 정상적으로 Hello World! 가 출력되어야 한다.


이제 본격적으로 Javalin 작업을 해봅시다. 첫번째로 할 작업은 build.gradle 파일에 Javalin 모듈을 추가하는 것이다. slf4j 로깅 모듈도 함께 추가해줍니다.


그리고, App.java 파일을 아래와 같이 바꾸어 줍니다.


/*
 * This source file was generated by the Gradle 'init' task
 */
package japi;

import io.javalin.Javalin;

public class App {
    public static void main(String[] args) {
        var app = makeJavalinServer();
        app.start(7070);
    }

    public static Javalin makeJavalinServer() {
        var app = Javalin.create();
        app.get("/", ctx -> { ctx.result("^^ ... Hello World, "); });
        return app;
    }
}

 

그리고, gradle run 을 실행하면, Javalin 이 작동하기 시작합니다.


웹브라우저 주소창에 localhost:7070 을 입력하면, 역시 Hello World 가 출력되는 것을 확인해볼 수 있습니다.


다양한 요청을 받기 위해서 컨트롤러를 분리해봅시다. 우선 japi 폴더 아래에 controller 폴더를 만들어줍니다. 그리고, 그 아래에 TestConroller.java 를 생성해서 다음과 같이 작성하고...


package japi.controller;

import io.javalin.http.Context;

public class TestController {
    // /test/request
    public static void request(Context ctx) {
        ctx.result("Test Request");
    }
}

 

App.java 파일을 열어서, 노랑 사각형의 내용을 추가해줍니다.


이제, 웹브라우저 주소창에 localhost:7070/test/request 라고 입력해주면 아래처럼 출력될 거에요.


설정 파일을 읽어서 적용될 수 있도록 기능을 추가해봅시다. 먼저, app 폴더 아래에 config 폴더를 만들고, 그 안에 config.properties 파일을 생성한 후에 아래처럼 PORT 정보를 입력합니다.


japi 폴더 아래 util 이라는 폴더를 생성하고, 그 안에 Common.java 를 작성합니다.


package japi.util;

import java.nio.file.Paths;
import java.util.Properties;
import java.nio.file.Files;
import java.io.InputStream;

public class Common {
    public static String getProperties(String name) {
        String return_val = "";
        Properties props = null;
        try (final InputStream in = Files.newInputStream(Paths.get("config/config.properties"))) {
            props = new Properties();
            props.load(in);
            return_val = props.getProperty(name);
        } catch(Exception e) {
            e.printStackTrace();
        }
        return return_val;
    }
}


App.java 파일을 열어서 노랑박스 처럼 추가/수정을 해주고, 다시 gradle run 을 실행해서 잘 되는지 확인해봅니다.


일단, 여기까지 해보고 Javalin 문서를 보시면 왠만한 API는 만드실 수 있을거에요.

다음 번에는 Database 를 붙여봅시다. *^^*


댓글

이 블로그의 인기 게시물

야마하 디지털 피아노 YDP-140

테이블위로 마우스 커서 이동시 색깔 변경하기

피아노 연습