2013-10-25 1 views
1

저는 리포지토리가있는 Spring Data Mongo를 사용합니다. 내 XML 구성에서는 모든 것이 잘 동작한다. 이제 XML 구성 대신 Java 구성을 사용하고 싶습니다.
인터페이스 : 나는 정의 구현 저장소가자바 설정으로 구성된 커스텀 스프링 데이터 (mongo) 리포지토리의 자동 연결은 어떻게 작동합니까?

@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 { 

} 

이제 스프링이 시작할 때 맞춤 구현을 자동 실행하는 것처럼 보이지 않습니다. 나는 "유형의 적격 콩"을 얻지 못합니다. 이것은 자바 설정에서 지원되지 않습니까? 아니면 뭔가 빠졌습니까?

편집 : 나는 어떤 패키지에서 DefaultMongoDbFactoryConfig이있는 않습니다 스프링 데이터 몽고 1.3.1 봄 3.2.4

답변

5

을 사용하고 있습니다? @EnableMongoRepositories 주석에 명시 적으로 패키지를 명시하지 않으면 주석이 달린 구성 클래스의 패키지 만 검사합니다. 이 값이 foo.bar.config이고, 저장소가 foo.bar.repositories 인 경우 저장소 인터페이스가 없습니다.

+0

힌트를 보내 주셔서 감사합니다. 올리버. 주석에 basePackages 값을 추가했습니다. 이 작품! – osigge