spring - Programmatically register'ing WebMvcConfigurationSupport instead of @Configuration -


[this question similar "preventing @enablewebmvc-annotated class being picked @componentscan", different attack vector problem, got problem in spring 4]

since @componentscan finds @configuration instances, picks extension of webmvcconfigurationsupport want in servlet environment. in integration test mode, don't want that, since complains servletcontext not being present.

 java.lang.illegalstateexception: failed load applicationcontext     @ org.springframework.test.context.cacheawarecontextloaderdelegate.loadcontext(cacheawarecontextloaderdelegate.java:99)     @ ... caused by: java.lang.illegalargumentexception: servletcontext required configure default servlet handling     @ org.springframework.util.assert.notnull(assert.java:112)     @ org.springframework.web.servlet.config.annotation.defaultservlethandlerconfigurer.(defaultservlethandlerconfigurer.java:54)     @ org.springframework.web.servlet.config.annotation.webmvcconfigurationsupport.defaultservlethandlermapping(webmvcconfigurationsupport.java:329)     @ ... 

i used fix instead of letting found @componentscan having @configuration annotation, directly include using annotationconfigwebapplicationcontext.register(thatclass), code not run during integration test setup.

this worked fine until upgraded spring 4.0.2, new exception 4.0 class compositeuricomponentscontributor:

 caused by: java.lang.illegalargumentexception: 'uricomponentscontributors' must not null     @ org.springframework.util.assert.notnull(assert.java:112) ~[spring-core-4.0.2.release.jar:4.0.2.release]     @ org.springframework.web.method.support.compositeuricomponentscontributor.(compositeuricomponentscontributor.java:88) ~[spring-web-4.0.2.release.jar:4.0.2.release]     @ org.springframework.web.servlet.config.annotation.webmvcconfigurationsupport.mvcuricomponentscontributor(webmvcconfigurationsupport.java:573) ~[spring-webmvc-4.0.2.release.jar:4.0.2.release]     @ sun.reflect.nativemethodaccessorimpl.invoke0(native method) ~[na:1.7.0_51]     @ sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl.java:57) ~[na:1.7.0_51]     @ sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl.java:43) ~[na:1.7.0_51]     @ java.lang.reflect.method.invoke(method.java:606) ~[na:1.7.0_51]     @ org.springframework.beans.factory.support.simpleinstantiationstrategy.instantiate(simpleinstantiationstrategy.java:166) ~[spring-beans-4.0.2.release.jar:4.0.2.release]     ... 34 common frames omitted 

so apparently reason needs "@configuration-found", instead of being included register call.

why that? how can fixed? understand can move out of @componentscan "path", want know happens.

try this: annotate integration test classes @webappconfiguration. create mock servletcontext spring mvc setup.


Comments

Popular posts from this blog

c# - How to get the current UAC mode -

postgresql - Lazarus + Postgres: incomplete startup packet -