Mr.*_*jun 7 java spring spring-data spring-data-mongodb spring-boot
项目被配置为使用多个MongoTemplate小号
Mongo Ref被传递为
@EnableMongoRepositories(basePackages={"com.mypackage.one"}, mongoTemplateRef="mongoTemplateOne")
Run Code Online (Sandbox Code Playgroud)
对于包中的存储库 com.mypackage.one
和
@EnableMongoRepositories(basePackages={"com.mypackage.two"}, mongoTemplateRef="mongoTemplateTwo")
Run Code Online (Sandbox Code Playgroud)
对于包中的存储库 com.mypackage.two
对于标准存储库,它工作正常.但对于我需要自定义行为的场景,我定义了myRepoCustomImpl以及我的自定义行为需求.
问题:我需要访问类似标准存储库的MongoTemplate.
例如,如果MyRepo将MyRepoCustom接口扩展为
@Repository
interface MyRepo extends MongoRepository<MyEntity, String>, MyRepoCustom{}
Run Code Online (Sandbox Code Playgroud)
MyRepoCustomImpl
@Service
public class MyRepoCustomImpl implements MyRepoCustom{
@Autowired
@Qualifier("mongoTemplateOne")
MongoTemplate mongoTmpl;
@Override
MyEntity myCustomNeedFunc(String arg){
// MyImplemenation goes here
}
}
Run Code Online (Sandbox Code Playgroud)
如果MyRepo在包中com.mypackage.one,myRepomongoTemplateOne将使用它,所以应该有一些方法让MyRepoCustomImpl知道它也应该使用mongoTemplateOne,每当我在mongoTemplateReffor中进行更改时MyRepo,比如说
@EnableMongoRepositories(basePackages={"com.mypackage.one"}, mongoTemplateRef="mongoTemplateThree")
Run Code Online (Sandbox Code Playgroud)
现在我需要对@Qualifier进行更改MyRepoCustomImpl!自定义行为有很多回购,因此它变得繁琐乏味.
问题:相反,没有任何方法可以根据它扩展到的回购自动注入或解决使用的MongoTemplate?
Sha*_*Jan -1
您可以直接在服务类中注入 MongoTemplate 和 MongoOperations。
尝试自动连接它们,然后你应该就可以了。
更新:
如果没有使用适当的限定符进行自动装配(因为您有两个存储库),这是不可能的。作为自定义类,所有这些都与存储库不同。如果您只有一个存储库,那么 mongotemplate 的自动装配就足够了,否则您必须在 impl 中提供限定符,因为创建了两个 MongoTempalte bean。
| 归档时间: |
|
| 查看次数: |
3744 次 |
| 最近记录: |