Spring security OAuth2AuthenticationProcessingFilter bean创建失败,出现格式错误的ParameterizedTypeException

Spring security OAuth2AuthenticationProcessingFilter bean创建失败,出现格式错误的ParameterizedTypeException,spring-security,oauth-2.0,Spring Security,Oauth 2.0,我使用的是spring-security-oauth2的1.0.0.RELEASE版本。我的Maven依赖性是: <dependency> <groupId>org.springframework.security.oauth</groupId> <artifactId>spring-security-oauth2</artifactId> <version>1.0.0.RELEASE</ver

我使用的是spring-security-oauth2的1.0.0.RELEASE版本。我的Maven依赖性是:

<dependency>
    <groupId>org.springframework.security.oauth</groupId>
    <artifactId>spring-security-oauth2</artifactId>
    <version>1.0.0.RELEASE</version>
</dependency>

org.springframework.security.oauth
spring-security-oauth2
1.0.0.1版本
这是我在应用程序上下文中的bean定义

<bean id="inMemoryTokenStore"
    class="org.springframework.security.oauth2.provider.token.InMemoryTokenStore">
</bean>

<bean id="tokenServices"
    class="org.springframework.security.oauth2.provider.token.DefaultTokenServices">
    <property name="tokenStore" ref="inMemoryTokenStore" />
</bean>

<bean id="oAuth2AuthenticationManager"
    class="org.springframework.security.oauth2.provider.authentication.OAuth2AuthenticationManager">
    <property name="tokenServices" ref="tokenServices" />
</bean>

<bean id="oAuth2AuthProcessingFilter"
    class="org.springframework.security.oauth2.provider.authentication.OAuth2AuthenticationProcessingFilter">
    <property name="authenticationManager" ref="oAuth2AuthenticationManager" />
    <qualifier value="oAuth2"/>
</bean>

当我尝试创建bean时,我得到了以下奇怪的异常,没有具体的信息

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'oAuth2AuthProcessingFilter' defined in class path resource [com/etrade/spring/security/oauth/web/application/OAuth2Filters-context.xml]: Initialization of bean failed; nested exception is java.lang.reflect.MalformedParameterizedTypeException
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:527)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:609)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:918)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:469)
at org.springframework.test.context.support.AbstractGenericContextLoader.loadContext(AbstractGenericContextLoader.java:103)
at org.springframework.test.context.support.AbstractGenericContextLoader.loadContext(AbstractGenericContextLoader.java:1)
at org.springframework.test.context.support.DelegatingSmartContextLoader.loadContext(DelegatingSmartContextLoader.java:228)
at org.springframework.test.context.TestContext.loadApplicationContext(TestContext.java:124)
at org.springframework.test.context.TestContext.getApplicationContext(TestContext.java:148)
... 28 more
Caused by: java.lang.reflect.MalformedParameterizedTypeException
at sun.reflect.generics.reflectiveObjects.ParameterizedTypeImpl.validateConstructorArguments(ParameterizedTypeImpl.java:42)
at sun.reflect.generics.reflectiveObjects.ParameterizedTypeImpl.<init>(ParameterizedTypeImpl.java:35)
at sun.reflect.generics.reflectiveObjects.ParameterizedTypeImpl.make(ParameterizedTypeImpl.java:77)
at sun.reflect.generics.factory.CoreReflectionFactory.makeParameterizedType(CoreReflectionFactory.java:86)
at sun.reflect.generics.visitor.Reifier.visitClassTypeSignature(Reifier.java:122)
at sun.reflect.generics.tree.ClassTypeSignature.accept(ClassTypeSignature.java:31)
at sun.reflect.generics.repository.ConstructorRepository.getParameterTypes(ConstructorRepository.java:76)
at java.lang.reflect.Method.getGenericParameterTypes(Method.java:282)
at org.springframework.core.GenericTypeResolver.getTargetType(GenericTypeResolver.java:65)
at org.springframework.core.GenericTypeResolver.resolveParameterType(GenericTypeResolver.java:80)
at org.springframework.beans.GenericTypeAwarePropertyDescriptor.getWriteMethodParameter(GenericTypeAwarePropertyDescriptor.java:150)
at org.springframework.beans.GenericTypeAwarePropertyDescriptor.getPropertyType(GenericTypeAwarePropertyDescriptor.java:132)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.isExcludedFromDependencyCheck(AbstractAutowireCapableBeanFactory.java:1269)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.filterPropertyDescriptorsForDependencyCheck(AbstractAutowireCapableBeanFactory.java:1245)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1101)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:517)
... 41 more
org.springframework.beans.factory.BeanCreationException:创建名为“oAuth2AuthProcessingFilter”的bean时出错,该bean在类路径资源[com/etrade/spring/security/oauth/web/application/OAuth2Filters context.xml]中定义:初始化bean失败;嵌套异常为java.lang.reflect.MalformedParameterizedTypeException
位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:527)
位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
位于org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294)
位于org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225)
位于org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291)
位于org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
位于org.springframework.beans.factory.support.DefaultListableBeanFactory.PreInstanceSingleton(DefaultListableBeanFactory.java:609)
位于org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:918)
位于org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:469)
位于org.springframework.test.context.support.AbstractGenericContextLoader.loadContext(AbstractGenericContextLoader.java:103)
位于org.springframework.test.context.support.AbstractGenericContextLoader.loadContext(AbstractGenericContextLoader.java:1)
位于org.springframework.test.context.support.DelegatingSmartContextLoader.loadContext(DelegatingSmartContextLoader.java:228)
位于org.springframework.test.context.TestContext.loadApplicationContext(TestContext.java:124)
位于org.springframework.test.context.TestContext.getApplicationContext(TestContext.java:148)
... 28多
原因:java.lang.reflect.MalformedParameterizedTypeException
位于sun.reflect.generics.reflectiveObjects.ParameterizedTypeImpl.validateConstructorArguments(ParameterizedTypeImpl.java:42)
位于sun.reflect.generics.reflectiveObjects.ParameterizedTypeImpl.(ParameterizedTypeImpl.java:35)
位于sun.reflect.generics.reflectiveObjects.ParameterizedTypeImpl.make(ParameterizedTypeImpl.java:77)
在sun.reflect.generics.factory.CoreReflectionFactory.MakeParameteredType(CoreReflectionFactory.java:86)
位于sun.reflect.generics.visitor.Reifier.visitClassTypeSignature(Reifier.java:122)
在sun.reflect.generics.tree.ClassTypeSignature.accept(ClassTypeSignature.java:31)
位于sun.reflect.generics.repository.ConstructorRepository.getParameterTypes(ConstructorRepository.java:76)
位于java.lang.reflect.Method.getGenericParameterTypes(Method.java:282)
位于org.springframework.core.GenericTypeResolver.getTargetType(GenericTypeResolver.java:65)
位于org.springframework.core.GenericTypeResolver.resolveParameterType(GenericTypeResolver.java:80)
位于org.springframework.beans.GenericTypeAwarePropertyDescriptor.getWriteMethodParameter(GenericTypeAwarePropertyDescriptor.java:150)
位于org.springframework.beans.GenericTypeAwarePropertyDescriptor.getPropertyType(GenericTypeAwarePropertyDescriptor.java:132)
位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.isExcludedFromDependencyCheck(AbstractAutowireCapableBeanFactory.java:1269)
位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.filterPropertyDescriptorsForDependencyCheck(AbstractAutowireCapableBeanFactory.java:1245)
位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1101)
位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:517)
... 41多

我在Stackoverflow上读到了类似的问题,并尝试了一些建议,比如验证spring版本是否存在冲突,但没有任何帮助。请让我知道如何解决这个问题

我想我应该对这个问题有所了解,因为我也在深入研究这个问题

如果我们看一下,它将
authenticationDetailsSource
的类型设置为
authenticationDetailsSource
,但至少在版本3.1.0.M1之前,它都没有模板化(请参阅和)


其缺点是,SpringSecurityOAuth需要3.1.x的SpringSecurity才能工作。在升级之前,我将尝试一种混乱的解决方法,因为我们依赖于需要3.0.x的grails插件。

没有spring版本冲突,但spring安全版本中存在冲突。其中一个依赖项使用了SpringSecurity3.0.7.0版本。升级到Spring security的3.1.3.0版本后,问题得到解决。