목차

Spring Static Field Injection

일반적인 static field

Spring에서 static field 에 객체를 주입하는 방법은, non-static setter를 만들어서 해당 메소드에 @Resource/@Autowired를 해주면 된다.

Spring annotations static injection tutorial의 코드를 참조하자면,

@Component
public class UserUtils
{
  private static UserAccessor userAccessor;
 
  /**
   * Sets the user DAO. This method should never be called except by Spring
   * @param userAccessor The user accessor to set
   */
  @Autowired(required = true)
  public void setUserAccessor(userAccessor UserAccessor) {
    UserUtils.userAccessor = userAccessor;
  }
}

Servlet 리소스 계통에 대한 static field

JSP Tag Library등에 주입할 때는 View Resolver 설정에 exposeContextBeansAsAttributes를 다음과 같이 true로 지정한 뒤에 Request Context에서 Bean 이름으로 읽어들이는 것도 가능하다. java - How to inject spring beans into a jsp 2.0 SimpleTag? 참조.

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  <property name="exposeContextBeansAsAttributes" value="true"/>
</bean>