在grails中注入(inject)依赖的不同方式有什么区别:

  • ABCService abcService
  • def abcService
  • @自动连线
    ABCService ABCService
  • 最佳答案

  • 指定了预期的类型,如果名称为abcService的服务(或其他具有该名称的Spring bean)将具有不同的class,则您将在此处获得ClassCastException
  • 任何名称为abcService的 bean
  • Spring注释,它是可选的。但是,如果您标记了一个字段但Grails / Spring找不到这样的bean,它将抛出NoSuchBeanDefinitionException(如果不存在,则前两个将获得null)@Autowired可以与def类型结合使用

  • 基本上Grails服务是标准的Spring Bean,Grails遵循 convention over configuration ,对于services目录中的每个类,它将创建一个名称为abcService的bean,可以将其自动连接到其他bean中。其他所有工作在Spring之前完成。另请参阅Spring and Grails的文档

    08-07 21:18