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

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

我将 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();
    }


}

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

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

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

}

现在 spring 似乎不会在启动时 Autowiring 自定义实现。我得到“没有类型的合格bean”。这在 Java 配置中不受支持还是我遗漏了什么?

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

最佳答案

DefaultMongoDbFactoryConfig 位于哪个包中?如果您没有在 @EnableMongoRepositories 注释中明确声明包,我们只会扫描注释配置类的包。如果这是在 foo.bar.config 中并且您在 foo.bar.repositories 中有您的存储库,则不会找到存储库接口(interface)。

关于java - 使用 java config 配置的自定义 spring 数据 (mongo) 存储库的 Autowiring 如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19594965/

相关文章:

java - 使用空列表作为输入调用 Itemwriter

spring - 如何使用 Spring data REST 在 pagingAndSorting 存储库接口(interface)中反转 findAll() 查询

spring - 如何从 Spring Controller 返回未找到状态

java - Spring REST服务 "No mapping found for HTTP request with URI"

java - Android-如何消除这些gradle/proguard警告?

java - Android:不允许后台执行:接收Intent

java - Spring MVC + EntityManager - 创建bean时出错

JavaScript 未在 jsp 中运行

javascript - spring mvc ajax @ModelAttribute

java - Spring Security 身份验证 - 有关文档的问题