一尘不染

找不到默认的构造函数;嵌套异常是Spring MVC的java.lang.NoSuchMethodException?

spring

我正在使用Spring MVC控制器项目。下面是我的Controller,我声明了一个构造函数,该构造函数专门用于测试。

@Controller
public class TestController {

    private static KeeperClient testClient = null;

    static {

    // some code here

    }

    /**
     * Added specifically for unit testing purpose.
     * 
     * @param testClient
     */
    public TestController(KeeperClient testClient) {
        TestController.testClient = testClient;
    }

    // some method here

}

每当我启动服务器时,都会遇到异常

No default constructor found; nested exception is java.lang.NoSuchMethodException:

但是,如果我删除TestController构造函数,那么它将正常工作而不会出现任何问题。我在这里做什么错?

但是,如果我添加此默认构造函数,则它将开始正常工作-

    public TestController() {

    }

阅读 658

收藏
2020-04-20

共1个答案

一尘不染

Spring无法实例化你的TestController,因为它的唯一构造函数需要一个参数。你可以添加无参数构造函数,也可以在构造函数中添加@Autowired批注:

@Autowired
public TestController(KeeperClient testClient) {
    TestController.testClient = testClient;
}

在这种情况下,你要明确告诉Spring在实例化TestControlller时在应用程序上下文中搜索KeeperClient Bean并将其注入。

2020-04-20