JSTL Custom tag에 Spring Bean 주입하기

어떻게든 ApplicationContext만 가져오면 되는데 이미 SpringMVC에서 다 제공을 해주더군요

  1. RequestContextAwareTag을 상속한다.
    • 재미있는 부분은 해당 Tag클래스를 Spring Tag Library 구현체 모두 상속받아서 사용한다는 점입니다. 당연한 이야기 겠네요.
    • 예를 들면 MessageTag도 위 클래스를 상속받는데 jsp tag로 보면 <spring:message> 입니다.
  2. WebApplicationContext를 얻는다.
  3. 스프링 빈 주입

예제코드를 확인해봅시다.

// 1. RequestContextAwareTag 상속
public class CodeTag extends RequestContextAwareTag {
    @Autowired
    CodeService codeService;

...
    @Override
    protected int doStartTagInternal() throws Exception {
        if (codeService == null) {
            // 2. WebApplicationContext를 얻는다.
            WebApplicationContext wac = getRequestContext().getWebApplicationContext();
            AutowireCapableBeanFactory beanFactory = wac.getAutowireCapableBeanFactory();
            // 3. 스프링 빈 주입
            beanFactory.autowireBean(this);
        }
        // TODO working
        return SKIP_BODY;
    }
}

참 쉽죠 ~

참조 : http://stackoverflow.com/questions/3445908/is-there-an-elegant-way-to-inject-a-spring-managed-bean-into-a-java-custom-simpl

MJ

MJ
Backend 개발자 사람입니다. 어플리케이션의 복잡성을 다루는 DDD에 관심이 많습니다. 어제보다 더 나은 개발자가 되려고 항상 노력합니다.

spring boot 2.4.x 에서 openfeign + hystrix 통합하기

spring-boot 2.4.x spring-cloud 2020.x 의존성 상황에서 feign.hystrix.enabled=true가 안됨`feign.circuitbreaker.enabled=true` 로 바꿔보지만 openfeign과 hystr...… Continue reading

IDDD 14장. 애플리케이션

Published on June 19, 2018