首页 > 解决方案 > 是否可以在@Repository 中调用服务?

问题描述

我是java spring-mvc current的新手我有一个调用@Repository的@Controller,我想在@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 显示空异常

标签: javaspring-mvc

解决方案


EmailService为空,因为您从未设置它。该@Autowired注释仅适用于JdbcTemplate jdbcTemplate.

此外,不鼓励字段注入,因此最好的办法是使用构造函数注入。它也不太冗长。

private JdbcTemplate template;
private EmailService service;

@Autowired
public PublicDao(JdbcTemplate jt, EmailService es) {
  this.template = jt;
  this.service = es;
}

推荐阅读