我是java spring-mvc的新手,我有一个@Controller调用@Repository,并且我想在@Repository中使用@Service,这是可行的还是正确的方法?
我尝试将服务放入存储库中
@RequestMapping(value = "/activa-servicio", params={"cupon"}, method = RequestMethod.POST, produces = {MediaType.APPLICATION_JSON_VALUE})
@ResponseBody
public String activaServicio(HttpServletRequest request,@RequestParam(value="cupon") String cupon) throws IOException {
String json=publicDAO.activaServicio(cupon);
System.out.println(json);
return json;
}
@Repository
public class PublicDAO {
@Autowired
JdbcTemplate jdbcTemplate;
EmailService emailService;
public String activaServicio(String cupon) {
emailService.getActivationConfirmation();
}
我希望已触发EmailService,但当前的EmailService显示null异常
答案 0 :(得分:2)
EmailService
为空,因为您从未设置它。 @Autowired
批注仅适用于JdbcTemplate jdbcTemplate
。
此外,不鼓励使用字段注入,因此最好的选择是使用构造函数注入。它也不太冗长。
private JdbcTemplate template;
private EmailService service;
@Autowired
public PublicDao(JdbcTemplate jt, EmailService es) {
this.template = jt;
this.service = es;
}