我有一个使用注释的弹簧控制器。我给这个控制器一个带两个参数的构造函数。我想要初始化控制器的两种方法:构造函数注入和设置注入。Spring注释控制器是否需要默认构造函数
@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。 因此,是我的配置注释的构造函数是错误的还是在春天完全注释的控制器总是需要一个默认的构造函数?
谢谢,使用@Autowired的第一个选项工作。我没有尝试@Inject,因为这需要在应用程序中添加另一个jar。我想我会在稍后看@Resource的setter注入。 – 2010-11-07 15:01:04