【发布时间】:2011-05-06 03:48:38
【问题描述】:
我有一个使用注释的弹簧控制器。我给了这个控制器一个带有两个参数的构造函数。我想要两种初始化控制器的方法:构造函数注入和 setter 注入。
@Controller("viewQuestionController")
@RequestMapping("/public/viewQuestions")
public class ViewQuestionController
{
@Resource(name="questionService")
private QuestionService questionService;
/*public ViewQuestionController()
{
int i=0;
i++;
}
*/
public ViewQuestionController(@Qualifier("questionService") QuestionService questionService)
{
this.questionService = questionService;
}
@Resource(name="questionService")
public void setQuestionService(QuestionService questionService)
{
this.questionService = questionService;
}
}
当我取消注释默认构造函数时,控制器会正确启动。但是,如果我不这样做,我会得到一个 BeanInstantiationException,没有找到默认构造函数;嵌套异常是 java.lang.NoSuchMethodException。 那么,我对带注释的构造函数的配置是错误的,还是 Spring 中完全带注释的控制器总是需要默认构造函数?
【问题讨论】:
标签: spring annotations