@Autowire 带有注入构造函数参数的春豆?



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

@Service
public class PermissionsService { ... }

我有

@Service
public class PermissionsService {
public PermissionsService(@Autowired PermissionsDao dao) { 
//assign private dao field to autowired dao
}
}

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

@Configuration
public class PersistenceConfig {
public PermissionsService getPermissionsServiceBean() {
//What goes here?
}
}

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

@Configuration
public class PersistenceConfig {
public PermissionsService getPermissionsServiceBean() {
return new PermissionsService();
}
}

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

在你的主模块中

@Configuration
@Import(PersistenceConfig.class)
public class ServiceConfig() {
}

在您的实用程序模块中

@Configuration
@ComponentScan(basePackages = {"path-to-persistence-service-and-any-dependencies"})
public class PersistenceConfig {
}

如果您配置正确,则对PermissionsDao使用构造函数注入这一事实应该无关紧要。

相关内容

最新更新