내 grails 프로젝트의 Bootstrap.groovy에서 파기 된 콩을 액세스하려고합니다. 이것을 달성하는 방법에 대한 아이디어가 있습니까?Grails : 부트 스트랩 코드가 완전히 닫힙니다.
servletContext에 액세스 할 수없는 것 같습니다 ...?
내 grails 프로젝트의 Bootstrap.groovy에서 파기 된 콩을 액세스하려고합니다. 이것을 달성하는 방법에 대한 아이디어가 있습니까?Grails : 부트 스트랩 코드가 완전히 닫힙니다.
servletContext에 액세스 할 수없는 것 같습니다 ...?
당신은 코드의 덩어리를 사용 (부트 스트랩의 파괴 폐쇄 포함) 모든 곳에서의 ApplicationContext에 대한 참조를 얻을 수 있습니다
def ctx = org.codehaus.groovy.grails.web.context.ServletContextHolder.servletContext.getAttribute(org.codehaus.groovy.grails.web.servlet.GrailsApplicationAttributes.APPLICATION_CONTEXT);
빈에 대한 참조 ctx.beanName
로 쉽게 얻기.
import org.springframework.context.ApplicationContext;
import org.codehaus.groovy.grails.web.context.ServletContextHolder;
import org.codehaus.groovy.grails.web.servlet.GrailsApplicationAttributes;
public class SpringUtil {
public static ApplicationContext getCtx() {
return getApplicationContext();
}
public static ApplicationContext getApplicationContext() {
return (ApplicationContext) ServletContextHolder.getServletContext().getAttribute(GrailsApplicationAttributes.APPLICATION_CONTEXT);
}
@SuppressWarnings("unchecked")
public static <T> T getBean(String beanName) {
return (T) getApplicationContext().getBean(beanName);
}
}
및 예 :
def bean = SpringUtil.getBean("beanName")
이 건배, SIGI
흠, 심지어 을 예로 들자면 부트 스트랩의 파괴 블록 폐쇄를 사용합니다. 워드 프로세서에서 : 추측으로
It is not guaranteed that {{destroy}} will be called unless the application exits gracefully (for example by using the application server's shutdown command) so don't rely on it too much
, 나는 ServletContext를 이미 파괴되었다는 말을하려는 {{파괴}} 부트 스트랩의 폐쇄가 실행되고, 그 콩 있도록 액세스하려는 전에 이미 사라졌습니다. 누구든지 확인할 수 있습니까?
내가 '알고 여기
이 작업을 단순화 할 수 있습니다 (자바로 작성된) 작은 폴더의 유틸리티 클래스입니다 모든 늦게 여기 있어요 모든하지만 구글을 통해이 발견 이후 ... 는부트 스트랩 클래스는 난을 얻는다 모든 서비스와 콘트롤러 같은 것들과 마찬가지로, 이름으로 Spring 빈을 사용하지 않았다. 빈을 원한다면 이름으로 정의하면 나타납니다. 그렇지 않다면, grailsApplication을 해제하고 grailsApplication.mainContext.getBean 등으로 가십시오.