我在尝试导航到spring social web模块的/connect端点时收到以下错误。
我得到的:
[Request processing failed; nested exception is
org.springframework.beans.factory.BeanCreationException:
Error creating bean with name 'scopedTarget.connectionRepository'
defined in ServletContext resource [/WEB-INF/appContext.xml]:
Initialization of bean failed; nested exception is
org.springframework.aop.framework.AopConfigException:
Could not generate CGLIB subclass of class
[class org.springframework.social.connect.jdbc.JdbcConnectionRepository]:
Common causes of this problem include using a final class or a non-visible class;
nested exception is java.lang.IllegalArgumentException:
Superclass has no null constructors but no arguments were given]
web.xml的相关部分:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/appContext.xml
</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>mvc-dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value></param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
appContext.xml的相关部分:
<bean id="connectionFactoryLocator"
class="org.springframework.social.connect.support.ConnectionFactoryRegistry">
<property name="connectionFactories">
<list>
<bean class="org.springframework.social.facebook.connect.FacebookConnectionFactory">
<constructor-arg value="${facebook.clientId}" />
<constructor-arg value="${facebook.clientSecret}" />
</bean>
</list>
</property>
</bean>
<bean id="usersConnectionRepository"
class="org.springframework.social.connect.jdbc.JdbcUsersConnectionRepository">
<constructor-arg ref="dataSource" />
<constructor-arg ref="connectionFactoryLocator" />
<constructor-arg ref="textEncryptor" />
</bean>
<bean id="connectionRepository" factory-method="createConnectionRepository"
factory-bean="usersConnectionRepository" scope="request">
<constructor-arg value="#{request.userPrincipal.name}" />
<aop:scoped-proxy proxy-target-class="false" />
</bean>
感谢您的回复。
5条答案
按热度按时间vecaoik11#
我发现这个链接很有用https://github.com/socialsignin/socialsignin-showcase/issues/6,它解决了我的问题.
基本上,这个例子中的问题是AOP代理,由于某种原因,CGLIB代理在这个例子中不起作用。所以你必须关闭它,切换到JDK代理。所以我所做的只是在我的context.xml中做了这个更改-
到
通过设置**proxy-target-class ="false"**spring将使用JDK代理(不要问我为什么不知道)。
它解决了我的问题。
但如果它对你不起作用,那么也改变一下:
还有这个
希望这对你有帮助。编码愉快:)
gjmwrych2#
我有类似的问题,但我没有使用任何xml配置,一切都是由spring-boot自动配置的。
以下是我尝试使用/connect/facebook时得到的结果:
出现错误(类型=内部服务器错误,状态=500)。创建在类路径资源[org/springframework/social/config/annotation/SocialConfiguration.class]中定义的名为'scopedTarget.connectionRepository'的Bean时出错:初始化bean失败;嵌套的异常是org.springframework.aop.framework.无法生成类[类org.springframework.social.connect.jdbc.jdbcConnectionRepository]的CGLIB子类:此问题的常见原因包括使用final类或不可见类;嵌套异常是org.springframework.cglib.core。代码生成异常:java.lang.reflect.调用目标异常--〉空
根本原因是类路径中有spring-boot-devtools。删除devtools解决了问题。我还发现了某个人打开的PR,请在那里留下评论,以引起更多人对该问题的关注。pull request
更新合并PR,从2.0.0.M1开始,dev-tools不再有问题。
f3temu5u3#
对于springboot项目,有两种方法可以解决这个问题:
1.删除Spring引导-debtools依赖性。
1.在应用程序属性中设置
spring.aop.proxy-target-class=false
。vawmfj5a4#
我知道这个帖子很老了,但是,例外
Initialization of bean failed; nested exception is org.springframework.aop.framework.AopConfigException: Could not generate CGLIB subclass of class ...
带我来这里。我的解决方案是默认构造函数。
bxgwgixi5#
我的解决方案是从类定义中删除 final。
我在一些Rest控制器上使用PreAuthorize注解时遇到了同样的异常。问题是控制器类被定义为 final,这导致了这样的错误。