@Autowire Spring Bean 带有注入的构造函数参数?

我有一个类似于此处链接的项目结构:https : //stackoverflow.com/a/29583882/1243462。我在一个 JAR 中有一个包含 Service 类的util 库,旨在从另一个 Java 库/Maven 项目中使用。但是,我的 Service 类本身使用构造函数注入。所以,原来的问题有:


@Service

public class PermissionsService { ... }

我有


@Service

public class PermissionsService {


  public PermissionsService(@Autowired PermissionsDao dao) { 

   //assign private dao field to autowired dao

  }


}

而且,就像原来的帖子一样,我想创建一个实例PermissionsService并将其注入到我的客户端/消费者应用程序中。我不确定如何创建 Configuration 类。


 @Configuration

 public class PersistenceConfig {


   public PermissionsService getPermissionsServiceBean() {

     //What goes here?

   }

}

现在,我有一个解决方法,我用@Autowired PermissionsDao字段注入替换构造函数参数,并使用无参数构造函数。这使我能够:


 @Configuration

 public class PersistenceConfig {


   public PermissionsService getPermissionsServiceBean() {

     return new PermissionsService();

   }

}

但是,由于不鼓励字段注入,那么构建此代码的正确方法是什么?


莫回无
浏览 507回答 1
1回答

潇潇雨雨

在你的主模块中@Configuration@Import(PersistenceConfig.class)public class ServiceConfig() {}在您的 utils 模块中@Configuration@ComponentScan(basePackages = {"path-to-persistence-service-and-any-dependencies"})public class PersistenceConfig {}PermissionsDao如果配置正确,使用构造函数注入的事实应该无关紧要。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java