簡體   English   中英

mongoDB連接返回空值

[英]mongoDB connection returning null value

在我的代碼下面,該代碼返回null值。

ConfigurationFile.java

package config;

import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Bean;

import com.mongodb.MongoClient;

@Configuration
public class ConfigurationFile {
private static MongoTemplate mongoTemplate;
public @Bean(name="mongoTemplate")
MongoTemplate mongoTemplate()throws Exception{
    mongoTemplate = new MongoTemplate(new       MongoClient("localhost",27017),"Test");
    System.out.println("mongoTemplateValue1--> " + mongoTemplate);
    return mongoTemplate;

}

public static MongoTemplate getMongoTemplate() {
    System.out.println("mongoTemplateValue-->" + mongoTemplate);
    return mongoTemplate;
}

}

客戶端.java

package client;

import java.net.UnknownHostException;

import org.springframework.data.mongodb.core.MongoTemplate;

import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBCursor;
import com.mongodb.DBObject;
import com.mongodb.MongoClient;


import config.ConfigurationFile;

import extraction.Extractor;

public class Client {
private MongoTemplate mongoTemplate;

public static void main(String[] args){
    Client c = new Client();
    c.sample();

}

private void sample(){
    SetupMongoDb();
}

private void SetupMongoDb() {
    if (mongoTemplate == null) {
        System.out.println("insideSetup");
        mongoTemplate = ConfigurationFile.getMongoTemplate();
    }
}

}

我無法獲得mongoTemplate值。 下面的輸出insideSetup mongoTemplateValue-> null

有人可以幫忙嗎?

永遠不會調用mongoTemplate()方法,因為使用Client.main()啟動應用程序時實際上並沒有創建Spring Context。 需要學習Spring Framework的工作原理,特別是如何創建應用程序上下文 然后,您需要將上下文指向配置文件並使用自動裝配來獲取MongoTemplate

@Configuration
public class ConfigurationFile {
@Bean(name="mongoTemplate")
public MongoTemplate mongoTemplate()throws Exception{
    MongoTemplate mongoTemplate = new MongoTemplate(new MongoClient("localhost",27017),"Test");

    return mongoTemplate;

 }
}

然后,只需使用自動裝配字段即可:

@Service
public class SomeService {

  @Autowired
  private MongoTemplate mongoTemplate;

  public doSomething() {
    //Use your mongoTemplate
  }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM