[java] Guice를 활용한 서블릿 URL 매핑(Mapping) 처리 방법

개요

Guice는 Java 프레임워크에서 의존성 주입(Dependency Injection)을 처리하는데 사용되는 경량 프레임워크입니다. 이를 활용하여 서블릿 URL 매핑(Mapping)을 처리하는 방법을 알아보겠습니다.

Guice 설정

먼저 Guice를 프로젝트에 추가합니다. Maven을 사용한다면 pom.xml에 다음 의존성을 추가합니다.

<dependency>
    <groupId>com.google.inject</groupId>
    <artifactId>guice</artifactId>
    <version>4.2.3</version>
</dependency>

다음으로 Guice의 ServletModule을 상속받는 클래스를 생성합니다. 이 클래스에서 서블릿과 URL 매핑을 설정합니다.

import com.google.inject.servlet.ServletModule;

public class MyAppModule extends ServletModule {
    
    @Override
    protected void configureServlets() {
        bind(MyServlet.class); // MyServlet을 Guice에 바인딩
        
        serve("/myservlet").with(MyServlet.class); // "/myservlet"에 MyServlet 매핑
    }
}

서블릿 생성

서블릿을 생성하기 위해 HttpServlet 클래스를 상속받는 클래스를 작성합니다.

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class MyServlet extends HttpServlet {
    
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) {
        // 서블릿 로직 구현
    }
}

Guice 설정 적용

web.xml 파일을 생성하고 Guice의 GuiceServletContextListener를 설정합니다.

<web-app>
    <listener>
        <listener-class>com.google.inject.servlet.GuiceServletContextListener</listener-class>
    </listener>
    
    <filter>
        <filter-name>guiceFilter</filter-name>
        <filter-class>com.google.inject.servlet.GuiceFilter</filter-class>
    </filter>
    
    <filter-mapping>
        <filter-name>guiceFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
</web-app>

실행 및 테스트

이제 프로젝트를 실행하고 브라우저에서 http://localhost:8080/myservlet에 접속하면 설정한 서블릿이 동작합니다. 위 예제에서는 doGet() 메서드에 로직을 구현하지 않았으므로, 해당 경로로 요청할 경우 응답이 없을 것입니다.

결론

Guice를 사용하면 서블릿 URL 매핑을 더욱 간단하게 처리할 수 있습니다. 의존성 주입을 통해 코드의 유연성과 재사용성을 높일 수 있습니다. Guice의 다양한 기능과 설정에 대해서는 공식 문서를 참조하시기 바랍니다.

참고 자료