@Autowire Spring 带有注入构造函数参数的 Bean?
@Autowire Spring Bean with Injected Constructor args?
我有一个类似于此处链接的项目结构:。我有一个 util library 在一个 JAR 中包含一个服务 class,打算从另一个 Java library/Maven 项目中使用。但是,我的服务 class 本身使用构造函数注入。所以,原来的问题是:
@Service
public class PermissionsService { ... }
我有
@Service
public class PermissionsService {
public PermissionsService(@Autowired PermissionsDao dao) {
//assign private dao field to autowired dao
}
}
而且,就像原来的 post 一样,我想创建一个 PermissionsService
的实例并将其注入到我的 client/consumer 应用程序中。我不确定如何创建配置 class。
@Configuration
public class PersistenceConfig {
public PermissionsService getPermissionsServiceBean() {
//What goes here?
}
}
现在,我有一个变通方法,我用字段注入替换了 @Autowired PermissionsDao
构造函数参数,并且有一个无参数构造函数。这让我可以:
@Configuration
public class PersistenceConfig {
public PermissionsService getPermissionsServiceBean() {
return new PermissionsService();
}
}
但是,由于不鼓励 Field 注入,构建此代码的正确方法是什么?
在你的主模块中
@Configuration
@Import(PersistenceConfig.class)
public class ServiceConfig() {
}
在您的实用程序模块中
@Configuration
@ComponentScan(basePackages = {"path-to-persistence-service-and-any-dependencies"})
public class PersistenceConfig {
}
如果配置正确,PermissionsDao
使用构造函数注入这一事实应该无关紧要。
我有一个类似于此处链接的项目结构:
@Service
public class PermissionsService { ... }
我有
@Service
public class PermissionsService {
public PermissionsService(@Autowired PermissionsDao dao) {
//assign private dao field to autowired dao
}
}
而且,就像原来的 post 一样,我想创建一个 PermissionsService
的实例并将其注入到我的 client/consumer 应用程序中。我不确定如何创建配置 class。
@Configuration
public class PersistenceConfig {
public PermissionsService getPermissionsServiceBean() {
//What goes here?
}
}
现在,我有一个变通方法,我用字段注入替换了 @Autowired PermissionsDao
构造函数参数,并且有一个无参数构造函数。这让我可以:
@Configuration
public class PersistenceConfig {
public PermissionsService getPermissionsServiceBean() {
return new PermissionsService();
}
}
但是,由于不鼓励 Field 注入,构建此代码的正确方法是什么?
在你的主模块中
@Configuration
@Import(PersistenceConfig.class)
public class ServiceConfig() {
}
在您的实用程序模块中
@Configuration
@ComponentScan(basePackages = {"path-to-persistence-service-and-any-dependencies"})
public class PersistenceConfig {
}
如果配置正确,PermissionsDao
使用构造函数注入这一事实应该无关紧要。