【问题标题】:mongoDB connection returning null valuemongoDB连接返回空值
【发布时间】:2015-06-04 06:32:17
【问题描述】:

在我的代码下面,它返回值为 null。

配置文件.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 值。低于输出 内部设置 mongoTemplateValue-->null

有人可以帮忙吗?

【问题讨论】:

    标签: java spring mongodb


    【解决方案1】:

    您的mongoTemplate() 方法永远不会被调用,因为您在使用Client.main() 启动应用程序时实际上并没有创建Spring 上下文。 需要了解 Spring Framework 是如何工作的,特别是如何create application context。然后你需要将你的上下文指向你的配置文件并使用自动装配来获取你的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
      }
    }
    

    【讨论】:

    • 我正在使用@Bean(name="mongoTemplate")。这还不够吗?
    • @Syed 不,它什么也没做,因为你没有正确启动 Spring。
    猜你喜欢
    • 1970-01-01
    • 2015-10-05
    • 2014-10-04
    • 1970-01-01
    • 1970-01-01
    • 2011-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多