Spring Data访问 MongoDB(十六)----CDI集成

存储库接口的实例通常由容器创建,在使用Spring Data时,Spring是最自然的选择。从1.3.0版本开始,Spring Data MongoDB附带了一个自定义的CDI扩展,允许你在CDI环境中使用存储库抽象。扩展是JAR的一部分。要激活它,请将Spring Data MongoDB JAR放入类路径中。现在,你可以通过为MongoTemplate实现CDI Producer来设置基础设施(infrastructure),如下例所示:

java 复制代码
class MongoTemplateProducer {

    @Produces
    @ApplicationScoped
    public MongoOperations createMongoTemplate() {

        MongoDatabaseFactory factory = new SimpleMongoClientDatabaseFactory(MongoClients.create(), "database");
        return new MongoTemplate(factory);
    }
}

Spring Data MongoDB CDI扩展选择可用的MongoTemplate作为CDI bean,并在容器请求存储库类型的bean时为Spring Data存储库创建代理。因此,获取Spring Data存储库的实例需要声明@Inject属性,如下例所示:

java 复制代码
class RepositoryClient {

  @Inject
  PersonRepository repository;

  public void businessMethod() {
    List<Person> people = repository.findAll();
  }
}
相关推荐
环流_1 分钟前
多线程3(线程安全问题及解决方案)
java·开发语言
杰克尼5 分钟前
天机学堂项目总结(day1~day2)
大数据·jvm·spring·elasticsearch·搜索引擎·spring cloud·mybatis
FeBaby22 分钟前
Java 高并发场景下 Redis 分布式锁(UUID+Lua)最佳实践
java·redis·分布式
落子君28 分钟前
设计模式之【 断路器模式】
java
添砖java。。。30 分钟前
java实现mqtt链接并控制门锁设备
java·开发语言
xier_ran39 分钟前
【C++】static 关键字与 const 关键字的作用
java·数据库·microsoft
凭君语未可1 小时前
为什么需要代理?从一个基础问题理解 JDK 静态代理
java·开发语言
云烟成雨TD1 小时前
Spring AI Alibaba 1.x 系列【24】结构化输出(Structured Output)
数据库·人工智能·spring
Makoto_Kimur1 小时前
Agent 面试速成清单
java·agent
人道领域1 小时前
【黑马点评日记02】Redis缓存优化:商户查询性能提升百倍
java·spring boot·spring·servlet·tomcat·intellij-idea