我正在使用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构造函数,那么它将正常工作而不会出现任何问题。我在这里做什么错?
TestController
但是,如果我添加此默认构造函数,则它将开始正常工作-
public TestController() { }
Spring无法实例化你的TestController,因为它的唯一构造函数需要一个参数。你可以添加无参数构造函数,也可以在构造函数中添加@Autowired批注:
@Autowired public TestController(KeeperClient testClient) { TestController.testClient = testClient; }
在这种情况下,你要明确告诉Spring在实例化TestControlller时在应用程序上下文中搜索KeeperClient Bean并将其注入。