我将 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(扩展自定义接口)
CustomInterface: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