[java] Guice를 사용하여 서블릿에서 프로퍼티(Property) 설정하기

Guice는 의존성 주입(Dependency Injection)을 쉽게 구현하기 위해 사용되는 자바 라이브러리입니다. 서블릿에서 Guice를 사용하여 프로퍼티(Property)를 설정하는 방법에 대해 알아보겠습니다.

1. 의존성 추가

먼저, pom.xml 파일에 Guice의 의존성을 추가해야 합니다.

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

2. 프로퍼티 설정 클래스 생성

프로퍼티를 설정하기 위해 별도의 클래스를 생성합니다. 이 클래스는 ServletModule을 상속하고 configureServlets 메서드를 오버라이딩합니다.

import com.google.inject.servlet.ServletModule;

public class MyServletModule extends ServletModule {
  @Override
  protected void configureServlets() {
    // 프로퍼티 설정
    bindConstant().annotatedWith(Names.named("my.property")).to("my_value");
    
    // 서블릿 등록
    serve("/my-servlet").with(MyServlet.class);
  }
}

위의 예시에서는 my.property라는 이름으로 “my_value”라는 프로퍼티를 설정하고, /my-servlet 경로에 MyServlet을 등록하고 있습니다.

3. Guice 서블릿 필터 등록

프로퍼티 설정 클래스를 Guice의 GuiceFilter를 사용하여 등록해야 합니다. 이를 위해 web.xml 파일에 다음과 같이 설정합니다.

<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>

4. 서블릿에서 프로퍼티 사용

서블릿에서 프로퍼티를 사용하려면 Guice를 통해 프로퍼티를 주입받아야 합니다.

import com.google.inject.Inject;
import com.google.inject.name.Named;

public class MyServlet extends HttpServlet {

  @Inject
  @Named("my.property")
  private String myProperty;
  
  @Override
  protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    PrintWriter out = response.getWriter();
    out.println("My Property: " + myProperty);
  }
}

위의 예시에서는 my.property라는 이름으로 설정한 프로퍼티를 @Inject@Named 어노테이션을 사용하여 주입받았습니다.

결론

Guice를 사용하여 서블릿에서 프로퍼티를 설정하는 방법을 살펴보았습니다. Guice를 활용하면 의존성 주입을 쉽게 구현할 수 있으며, 프로퍼티 설정을 통해 유연한 애플리케이션 개발이 가능해집니다. Guice의 더 많은 기능과 사용 방법에 대해서는 Guice 공식 문서를 참고하시기 바랍니다.