java强制超类包含noargument构造函数
关于弹簧控制器;包含构造函数时,必须同时包含无参数构造函数,否则会发生“NoSuchBeanDefinitionException”。这个信息非常模糊,让我有些头疼
我们目前有一个抽象的控制器类,大多数控制器都是从这个类扩展而来的。当我的控制器扩展这个类(它有一个1参数构造函数)时,我突然收到了“NoSuchBeanDefinitionException”
我想通过强迫任何扩展抽象控制器的人包含一个无参数构造函数来帮助未来的开发人员(甚至是我自己)。这可能吗
编辑,添加代码以保持清晰
这是大多数控制器的扩展类,它包括几个助手方法:
public class AbstractController
{
private String sessionName;
// other attributes / final variables
public AbstractController(String sessionName)
{
this.sessionName = sessionName;
}
public boolean isCommandInSession(HttpSession session)
{
return session.getAttribute(sessionName) != null;
}
// Other helper methods which include use of 'sessionName'
}
多个控制器中的一个的示例,工作正常。如果没有默认构造函数,或仅重写1参数构造函数,此控制器将失败,并显示“NoSuchBeanDefinitionException”
@Controller
@SessionAttributes(SomeController.COMMAND)
@RequestMapping(SomeController.URL)
public class SomeController extends AbstractController
{
private String command = "someUniqueSessionName";
public SomeController()
{
super(COMMAND);
}
}
共 (0) 个答案