gpt4 book ai didi

java - Spring MVC没有找到默认构造函数?

转载 作者:IT老高 更新时间:2023-10-28 13:58:48 27 4
gpt4 key购买 nike

我的 Spring Controller 出现问题 - 我没有找到默认构造函数 - 但它们确实有一个我试图通过 applicationContext.xml 创建的构造函数 - 相关位如下:

<bean id="PcrfSimulator" class="com.rory.services.pcrf.simulator.PcrfSimulator" init-method="start">  
</bean>

<bean id="CacheHandler" class="com.rory.services.pcrf.simulator.handlers.CacheHandler">
<constructor-arg index="0" type="com.rory.services.pcrf.simulator.CustomGxSessionIdCacheImpl">
<bean factory-bean="PcrfSimulator" factory-method="getGxSessionIdCache">
</bean>
</constructor-arg>
</bean>

即。我首先创建一个 bean,然后尝试将该 bean 的方法调用结果传递给第二个 bean 的 (CacheHandler) 构造函数。

这里是 CacheHandler 的开始:

    @Controller
public class CacheHandler {

private final CustomGxSessionIdCacheImpl gxSessionIdCache;

public CacheHandler(CustomGxSessionIdCacheImpl gxSessionIdCache) {
this.gxSessionIdCache = gxSessionIdCache;
}

这是我得到的错误:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'cacheHandler' defined in URL [jar:file:/users/rtorney/Documents/apache-tomcat-7.0.25/webapps/PCRFSimulator-4.0/WEB-INF/lib/PCRFSimulator-4.0.jar!/com/rory/services/pcrf/simulator/handlers/CacheHandler.class]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [com.rory.services.pcrf.simulator.handlers.CacheHandler]: No default constructor found; nested exception is java.lang.NoSuchMethodException: com.rory.services.pcrf.simulator.handlers.CacheHandler.<init>()

非常感谢任何帮助!

最佳答案

您应该在 xml 中定义您的 bean 或对它们进行注释,而不是同时使用两者(如果只是为了避免像您遇到的错误那样)。

这里的问题是你没有 Autowiring 构造函数参数,所以 spring 不知道如何处理你的 Controller 。它知道它必须创建一个 bean(@Controller 注释),但它不知道如何创建(没有默认值,也没有 Autowiring 的构造函数)。

您可以尝试执行以下操作:

@Controller
public class CacheHandler {

private final CustomGxSessionIdCacheImpl gxSessionIdCache;

@Autowired
public CacheHandler(CustomGxSessionIdCacheImpl gxSessionIdCache) {
this.gxSessionIdCache = gxSessionIdCache;
}

然后在xml中:

<bean id="gxSessionIdCache"
factory-bean="PcrfSimulator"
factory-method="getGxSessionIdCache"/>

所以它会 Autowiring 构造函数参数。

另一种选择是简单地创建默认构造函数和 Autowiring gxSessionIdCache 属性。

关于java - Spring MVC没有找到默认构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9296849/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com