首页 文章

使用java配置配置的自定义 spring 数据(mongo)存储库的自动装配如何工作?

提问于
浏览
1

我使用Spring Data Mongo和存储库 . 在我的xml配置中,一切正常 . 现在我想使用Java配置而不是xml-configuration . 这是我对存储库的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(扩展自定义接口)
CustomInterface:MyRepositoryCustom
实现:MyRepositoryImpl

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

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

}

现在spring似乎并没有在启动时自动启动自定义实现 . 我得到“没有类型的合格 beans ” . 这是不支持在java配置中还是我错过了什么?

EDIT :我正在使用spring数据mongo 1.3.1和spring 3.2.4

1 回答

  • 5

    DefaultMongoDbFactoryConfig 驻留在哪个包中?如果未在 @EnableMongoRepositories 批注中明确声明包,则我们仅扫描带注释的配置类的包 . 如果这是 foo.bar.config 并且您在 foo.bar.repositories 中有回购,则不会找到存储库接口 .

相关问题