2014-09-12 1 views
3

Grails 2.3.11을 사용하고 있습니다. 는 BootStrap.groovy에서 나는 전화 : 나는 내 개발 환경에서 응용 프로그램을 실행할 때이 예외를 throw하지 않습니다 NoSuchBeanDefinitionException이Grails 2.3 응용 프로그램 초기화 오류 : 'urlMappingsTargetSource'라는 빈을 정의하지 않았습니다.

12,09 21:55:44:084 [localhost-startStop-1] ERROR context.GrailsContextLoader - Error initializing the application: No bean named 'urlMappingsTargetSource' is defined 
    org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'urlMappingsTargetSource' is defined 
    at BootStrap$_closure1.doCall(BootStrap.groovy:10) 
    at grails.util.Environment.evaluateEnvironmentSpecificBlock(Environment.java:308) 
    at grails.util.Environment.executeForEnvironment(Environment.java:301) 
    at grails.util.Environment.executeForCurrentEnvironment(Environment.java:277) 
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) 
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:166) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) 
    at java.lang.Thread.run(Thread.java:722) 

을 얻고있다

def ctx = servletContext.getAttribute(ApplicationAttributes.APPLICATION_CONTEXT) 
HotSwappableTargetSource ts = ctx.getBean("urlMappingsTargetSource") 

. 그러나 war 파일을 빌드하고 Tomcat에 배포하면 org.springframework.beans.factory.NoSuchBeanDefinitionException이 발생합니다.

이 라인은 Grails 2.1.0 및 2.2.4를 사용할 때 정상적으로 작동합니다. Grails 2.3.9도 시도했지만 NoSuchBeanDefinitionException을 발생시킵니다.

나는이 또한 의존성 주입하지만를 사용해보십시오

class BootStrap { 

    def urlMappingsTargetSource 

다른 사람이이 문제를 건너거나 내가 NoSuchBeanDefinitionException이 무엇입니까 왜 아무도 알 수 있습니까 "urlMappingsTargetSource"널?

이 빈이 Grails 2.3과 Grails 2.2 또는 2.1에서로드되는 방식이 변경 되었습니까?

도움이나 통찰력을 주시면 감사하겠습니다. envrionment 개발 모드가 아니거나 다시로드는 콩이 초기화되지 않는 사용하도록 설정 한 경우

+0

일부 플러그인을 사용하고 있지 않습니까? 'urlMappingsTargetSource'는 표준 Grails 기능입니까? 다음 링크를 보면 아날로그와 비슷합니다. https://jira.grails.org/browse/GRAILS-10923 http://stackoverflow.com/questions/20663522/grails-error-creating-and-mapping-a-view – wwarlock

답변

3

UrlMappingsGrailsPlugin.groovy 다음 코드를

if (Environment.isDevelopmentMode() || Environment.current.isReloadEnabled()) { 
     "org.grails.internal.URL_MAPPINGS_HOLDER"(UrlMappingsHolderFactoryBean) { bean -> 
      bean.lazyInit = true 
     } 

     urlMappingsTargetSource(HotSwappableTargetSource, ref("org.grails.internal.URL_MAPPINGS_HOLDER")) { bean -> 
      bean.lazyInit = true 
     } 

     grailsUrlMappingsHolder(ProxyFactoryBean) { bean -> 
      bean.lazyInit = true 
      targetSource = urlMappingsTargetSource 
      proxyInterfaces = [UrlMappings] 
     } 
    } else { 
     grailsUrlMappingsHolder(UrlMappingsHolderFactoryBean) { bean -> 
      bean.lazyInit = true 
     } 
    } 

가 포함되어 있습니다. beans를 내 resources.groovy에 추가했는데 작동했습니다.

import org.codehaus.groovy.grails.web.mapping.UrlMappingsHolderFactoryBean 
import org.springframework.aop.framework.ProxyFactoryBean 
import org.springframework.aop.target.HotSwappableTargetSource 

// Place your Spring DSL code here 
beans = { 
"org.grails.internal.URL_MAPPINGS_HOLDER"(UrlMappingsHolderFactoryBean) { bean -> 
    bean.lazyInit = true 
} 

urlMappingsTargetSource(HotSwappableTargetSource, ref("org.grails.internal.URL_MAPPINGS_HOLDER")) { bean -> 
    bean.lazyInit = true 
} 

grailsUrlMappingsHolder(ProxyFactoryBean) { bean -> 
    bean.lazyInit = true 
    targetSource = urlMappingsTargetSource 
    proxyInterfaces = [org.codehaus.groovy.grails.web.mapping.UrlMappings] 
} 
} 
관련 문제