【问题标题】:How does autowiring of custom spring data (mongo) repositories configured with java config work?使用 java config 配置的自定义 spring 数据 (mongo) 存储库的自动装配如何工作?
【发布时间】:2013-11-04 20:58:49
【问题描述】:

我将 Spring Data Mongo 与存储库一起使用。在我的 xml 配置中,一切正常。现在我想使用 Java 配置而不是 xml 配置。这是我对存储库的 java 配置:

@Configuration
@EnableMongoRepositories
public class DefaultMongoDbFactoryConfig extends AbstractMongoConfiguration{

    @Value("${db.name}") private String dbName;

    @Inject
    private Mongo mongo;

    @Bean
    protected MongoDbFactory defaultMongoDbFactory() throws Exception {
        return new SimpleMongoDbFactory(mongo, dbName);
    }

    @Bean
    protected MongoTemplate defaultMongoTemplate() throws Exception {
        return new MongoTemplate(defaultMongoDbFactory());
    }

    @Override
    protected String getDatabaseName() {
        return dbName;
    }

    @Override
    public Mongo mongo() throws Exception {
        return mongo;
    }

    @Override
    protected String getMappingBasePackage() {
        return "foo.bar.repository";
    }

    @Override
    public MongoTemplate mongoTemplate() throws Exception {
        return defaultMongoTemplate();
    }


}

我有一个带有自定义实现的存储库:
接口:MyRepository(扩展自定义接口)
自定义接口:MyRepositoryCustom
实现:MyRepositoryImpl

我有另一个带有组件扫描注释的配置文件:

@Configuration
@ComponentScan(basePackages = {"foo.bar"})
@Import(DefaultMongoDbFactoryConfig.class)
public class AppConfig {

}

现在 spring 似乎不会在启动时自动装配自定义实现。我得到“没有符合条件的 bean 类型”。 java config不支持这个还是我遗漏了什么?

编辑:我正在使用 spring data mongo 1.3.1 和 spring 3.2.4

【问题讨论】:

    标签: java spring spring-mvc spring-data spring-data-mongodb


    【解决方案1】:

    DefaultMongoDbFactoryConfig 驻留在哪个包中?如果你没有在@EnableMongoRepositories注解中显式声明一个包,我们只扫描被注解的配置类的包。如果这是在foo.bar.config 中并且您在foo.bar.repositories 中有您的存储库,则不会找到存储库接口。

    【讨论】:

    • 感谢您的提示,奥利弗。我将 basePackages 值添加到注释中。这行得通!
    猜你喜欢
    • 2015-09-28
    • 2014-04-22
    • 2015-01-21
    • 2019-02-28
    • 1970-01-01
    • 2020-07-15
    • 1970-01-01
    • 2015-08-06
    • 1970-01-01
    相关资源
    最近更新 更多