是否可以在@Repository内调用服务?

时间:2019-05-15 15:48:13

标签: java spring-mvc

我是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异常

1 个答案:

答案 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;
}