我使用spring数据休息来进行经典的rest api调用,然后开发一些自定义控制器 . 我开始使用本地mongo db实例开发它,一切正常 . 现在我使用自定义控制器时遇到了一些问题 . 我在我的application.properties上设置 spring.data.mongodb.hostspring.data.mongodb.port ,并且spring数据提供的其余apis成功工作:我可以插入并获取数据没有问题 . 但是当我尝试调用自定义控制器时,看起来仍然在尝试连接到本地实例,因为我从日志中收到此错误消息:

com.mongodb.MongoTimeoutException: Timed out after 30000 ms while waiting for a server that matches ReadPreferenceServerSelector{readPreference=primary}. Client view of cluster state is {type=UNKNOWN, servers=[{address=127.0.0.1:27017, type=UNKNOWN, state=CONNECTING, exception={com.mongodb.MongoSocketOpenException: Exception opening socket}, caused by {java.net.ConnectException: Connection refused (Connection refused)}}]

这是我的存储库

@RepositoryRestResource(collectionResourceRel = "deployment", path = "deployment")
public interface DeploymentRepository extends MongoRepository<DeploymentRecord, String> {

    public List<DeploymentRecord> findByVmNameOrderByDeploymentTimeDesc(@Param("vmName") String vmName);

    public DeploymentRecord findFirstByVmNameOrderByDeploymentTimeDesc(@Param("vmName") String vmName);

}

这是自定义控制器的开始:

@RestController
@EnableHypermediaSupport(type = {HypermediaType.HAL})
public class EnvironmentController {

    @Autowired
    private DeploymentRepository deploymentRepository;

    @RequestMapping(value = "/listEnvironmentResources", method = RequestMethod.GET, produces = MediaTypes.HAL_JSON_VALUE)
    public Resources<Resource<EnvironmentRecordResource>> getEnvironmentResourceList(){

这是应用程序(默认,基本上)

@SpringBootApplication
public class Application {


    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

对象数据很简单,字符串字段和getter .

如何配置自定义控制器以使用application.properties上自生成的rest api使用的相同配置?

谢谢,米歇尔 .

UPDATE

我试图覆盖创建自己的配置

@Configuration
public class SpringMongoConfig extends AbstractMongoConfiguration{ 

    @Autowired
    private Environment env;

    @Override
    @Bean
    public Mongo mongo() throws Exception 
    {
        return new MongoClient(env.getProperty("spring.data.mongodb.host") , Integer.valueOf(env.getProperty("spring.data.mongodb.port")) );
    }

    public @Bean MongoTemplate mongoTemplate() throws Exception 
    {
        return new MongoTemplate(mongo(), getDatabaseName());
    }

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

仍然,这只能由标准api读取,自定义控制器想要连接到127.0.0.1:

2017-11-23 11:44:02.441  INFO 7 --- [nio-8080-exec-3] org.mongodb.driver.cluster               : Cluster created with settings {hosts=[127.0.0.1:27017], mode=SINGLE, requiredClusterType=UNKNOWN, serverSelectionTimeout='30000 ms', maxWaitQueueSize=500}
 2017-11-23 11:44:02.452  INFO 7 --- [127.0.0.1:27017] org.mongodb.driver.cluster               : Exception in monitor thread while connecting to server 127.0.0.1:27017

 com.mongodb.MongoSocketOpenException: Exception opening socket
    at com.mongodb.connection.SocketStream.open(SocketStream.java:63) ~[mongodb-driver-core-3.4.3.jar!/:na]
    at com.mongodb.connection.InternalStreamConnection.open(InternalStreamConnection.java:115) ~[mongodb-driver-core-3.4.3.jar!/:na]
    at com.mongodb.connection.DefaultServerMonitor$ServerMonitorRunnable.run(DefaultServerMonitor.java:113) ~[mongodb-driver-core-3.4.3.jar!/:na]
    at java.lang.Thread.run(Thread.java:748) [na:1.8.0_151]
 Caused by: java.net.ConnectException: Connection refused (Connection refused)
    at java.net.PlainSocketImpl.socketConnect(Native Method) ~[na:1.8.0_151]
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) ~[na:1.8.0_151]
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) ~[na:1.8.0_151]
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) ~[na:1.8.0_151]
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) ~[na:1.8.0_151]
    at java.net.Socket.connect(Socket.java:589) ~[na:1.8.0_151]
    at com.mongodb.connection.SocketStreamHelper.initialize(SocketStreamHelper.java:57) ~[mongodb-driver-core-3.4.3.jar!/:na]
    at com.mongodb.connection.SocketStream.open(SocketStream.java:58) ~[mongodb-driver-core-3.4.3.jar!/:na]
    ... 3 common frames omitted