微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java – 使用@Document的mongodb多语言拼写

这与.有关
MongoDB and SpEL Expressions in @Document annotations

这是我创建mongo模板的方式

@Bean
public MongoDbFactory mongoDbFactory() throws UnkNownHostException {
    String dbname = getCustid();
    return new SimpleMongoDbFactory(new MongoClient("localhost"),"mydb");
}

@Bean
MongoTemplate mongoTemplate() throws UnkNownHostException {
    MappingMongoConverter converter = 
            new MappingMongoConverter(mongoDbFactory(),new MongoMappingContext());
    return new MongoTemplate(mongoDbFactory(),converter);
}

我有一个租户提供者类

@Component("tenantProvider")
public class TenantProvider {

    public String getTenantId() {
      --custome Thread local logic for getting a name
    }
}

和我的域名课程

    @Document(collection = "#{@tenantProvider.getTenantId()}_device")
     public class Device {
    -- my fields here
    }

如你所见,我已经按照帖子中的说明创建了我的mongotemplate,但我仍然得到以下错误

Exception in thread “main” org.springframework.expression.spel.SpelEvaluationException: EL1057E:(pos 1): No bean resolver registered in the context to resolve access to bean ‘tenantProvider’

我究竟做错了什么?

最佳答案
终于弄明白我为什么会遇到这个问题.

使用Servlet 3初始化时,请确保将应用程序上下文添加到mongo上下文中,如下所示

    @Autowired
private ApplicationContext appContext;

public MongoDbFactory mongoDbFactory() throws UnkNownHostException {
    return new SimpleMongoDbFactory(new MongoClient("localhost"),"apollo-mongodb");
}

@Bean
MongoTemplate mongoTemplate() throws UnkNownHostException {
    final MongoDbFactory factory = mongoDbFactory();

    final MongoMappingContext mongoMappingContext = new MongoMappingContext();
    mongoMappingContext.setApplicationContext(appContext);

    // Learned from web,prevents Spring from including the _class attribute
    final MappingMongoConverter converter = new MappingMongoConverter(factory,mongoMappingContext);
    converter.setTypeMapper(new DefaultMongoTypeMapper(null));

    return new MongoTemplate(factory,converter);
}

检查上下文的自动装配以及
mongoMappingContext.setApplicationContext(appContext);

通过这两条线,我能够正确连接组件,以便在多租户模式下使用它

原文地址:https://www.jb51.cc/spring/431661.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐