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