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 를 붙여봅시다. *^^*
댓글
댓글 쓰기