2017-10-14 2 views
0

나는 프로젝트가 Spring-data-mongodb 인 간단한 maven 프로젝트를 가지고있다. 그리고 데이터베이스 연결 세부 사항 (지정)을 지정해야합니다. MongoDB 데이터베이스는 localhost에서 기본 설정 (포트 = 27017)으로 실행됩니다. 나는 프로젝트의 모든 작품을 잘 실행하면 내 주요 파일이스프링 데이터 mongodb 재정의 설정

public class MongoApp { 

    private static final Log log = LogFactory.getLog(MongoApp.class); 

    public static void main(String[] args) throws Exception { 

    MongoOperations mongoOps = new MongoTemplate(new MongoClient(), "database"); 
    mongoOps.insert(new Person("Joe", 34)); 

    log.info(mongoOps.findOne(new Query(where("name").is("Joe")), Person.class)); 

// mongoOps.dropCollection("person"); 

    } 
} 

과 같은 AppConfig

@Configuration 
@EnableMongoRepositories 
public class AppConfig extends AbstractMongoConfiguration { 

    @Override 
    protected String getDatabaseName() { 
     return "TestDatabase"; 
    } 

    @Override 
    public Mongo mongo() throws Exception { 
     // wrong port on purpose 
     return new MongoClient("127.0.0.1", 27007); 
    } 

} 

사용하려고하지만 난 그렇지 않아이 설정 인다.

프로젝트 구조

main 
-AppConfig.java 
-MongoApp.java 
-Person.java 
+0

모든 게 괜찮. 그럼 정확히 뭘 물어 보는거야? application.properties에서 구성을 가져 오시겠습니까? – barbakini

+0

아니, 난 그걸 어떻게 해야할지 모르겠어 ... 난 그냥 왜 작동하지 않습니다 ... 지정 포트 27007 잘못 때문입니다. 내 로컬 db는 27017에서 실행됩니다. 그래서 내 AppConfig가 무시된다고 생각합니다. – TomP

+0

db에서 아무것도 가져 오려고 했습니까? Spring은 느리게 연결을 설정할 수 있습니다. 따라서 첫 번째 요청까지 연결 예외가 발생하지 않습니다. – barbakini

답변

0

나는 해결책을 찾아 냈다. ApplicationContext

@Configuration 
public class AppConfig { 

    public @Bean 
    MongoDbFactory mongoDbFactory() throws Exception { 
     return new SimpleMongoDbFactory(new MongoClient(), "mydb"); 
    } 

    public @Bean 
    MongoTemplate mongoTemplate() throws Exception { 

     MongoTemplate mongoTemplate = new MongoTemplate(mongoDbFactory()); 

     return mongoTemplate; 

    } 

} 

그리고 주요 파일 : 나는이 구성을 사용

public class MongoApp { 

    private static final Log log = LogFactory.getLog(MongoApp.class); 

    public static void main(String[] args) throws Exception { 

     ApplicationContext ctx = new AnnotationConfigApplicationContext(AppConfig.class); 
     MongoOperations mongoOperation = (MongoOperations)ctx.getBean("mongoTemplate"); 

     mongoOperation.insert(new Person("Joe", 34)); 
     log.info(mongoOperation.findOne(new Query(where("name").is("Joe")), Person.class)); 
      //mongoOps.dropCollection("person"); 
    } 
} 
관련 문제