Spring 引导和 Couchbase 连接错误

Spring Boot and Couchbase Connection Error

我开始一起学习 spring boot 和 couchbase,并实现一个简单的自定义查询。但是,当我点击 localhost:8889/agents/findByAgentId/14045 时,出现“无法访问此站点”错误。我在这里错过了什么?我将不胜感激任何回应。谢谢

这是实体 Class

import com.sun.istack.internal.NotNull;
import lombok.*;
import org.springframework.data.annotation.Id;
import org.springframework.data.couchbase.core.mapping.Document;
import org.springframework.data.couchbase.core.mapping.Field;

@Document
@Setter
@Getter
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode
public class Agent {

@Id
@NotNull
@Field
private String AgentLeaderId;

@Field
private String agentPreference;

@Field
private String agency;

@Field
private String mobilePhone;

}

配置如下Class

import org.springframework.context.annotation.Configuration;
import org.springframework.data.couchbase.config.AbstractCouchbaseConfiguration;

@Configuration
public class AgentConfig extends AbstractCouchbaseConfiguration {

@Override
public String getConnectionString() {
    return ("127.0.0.1");
}

@Override
public String getUserName() {
    return "******";
}

@Override
public String getPassword() {
    return "*******";
}

@Override
public String getBucketName() {
    return "******";
}
}

这是存储库

import com.bit.pruleads.entity.Agent;
import org.springframework.data.couchbase.core.query.N1qlPrimaryIndexed;
import org.springframework.data.couchbase.core.query.ViewIndexed;
import org.springframework.data.couchbase.repository.CouchbaseRepository;
import org.springframework.data.couchbase.repository.Query;
import org.springframework.stereotype.Repository;

import java.io.Serializable;
import java.util.List;

@Repository
@N1qlPrimaryIndexed
@ViewIndexed(designDoc = "primaryLeadsData")
public interface AgentRepository extends CouchbaseRepository<Agent, String > {

    @Query("#{#n1ql.selectEntity} WHERE agentLeaderId =  AND #{#n1ql.filter}")
    List<Agent> findByAgentId(String agentId);

    @Query("#{#n1ql.selectEntity} WHERE mobilePhone =  AND #{#n1ql.filter}")
    List<Agent> findAgentsByPhoneNumber(String phoneNumber);

}

控制器Class

import com.bit.pruleads.entity.Agent;
import com.bit.pruleads.repository.AgentRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
public class AgentController {

@Autowired
private AgentRepository agentRepository;

public AgentController(AgentRepository agentRepository) {
    this.agentRepository = agentRepository;
}

@PostMapping("/findByAgentId/{id}")
public List<Agent> findByAgentId(@PathVariable String id) {
    return agentRepository.findByAgentId(id);
}

@PostMapping("/findAgentsByPhoneNumber/{phoneNumber}")
public List<Agent> findAgentByPhoneNumber(@PathVariable String phoneNumber) {
    return agentRepository.findAgentsByPhoneNumber(phoneNumber);
}

}

这是 pom 文件

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-couchbase</artifactId>
    </dependency>

    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <optional>true</optional>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
        <exclusions>
            <exclusion>
                <groupId>org.junit.vintage</groupId>
                <artifactId>junit-vintage-engine</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
</dependencies>

这是应用程序属性

#Server port
server.port =8889

这是一些日志

No active profile set, falling back to default profiles: default
Bootstrapping Spring Data Couchbase repositories in DEFAULT mode.
Finished Spring Data repository scanning in 456ms. 
Found 0 Couchbase 
repository interfaces.
Bootstrapping Spring Data Couchbase repositories in DEFAULT mode.
Finished Spring Data repository scanning in 35ms. 
Found 1 Couchbase repository interfaces.
Opened bucket "leads-data" 
Started PruleadsApplication in 7.502 seconds (JVM running for 8.685)
Closed bucket "leads-data" 
Node disconnected 
Completed shutdown and closed all open buckets 
Process finished with exit code 0

首先,改用这个版本:

<dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-couchbase</artifactId>
    <version>4.1.1</version>
</dependency>

您将需要更改一些导入,因此请查看此处的文档:https://docs.spring.io/spring-data/couchbase/docs/current/reference/html/#reference

删除注解@N1qlPrimaryIndexed 和@ViewIndexed,它们已被新注解取代:https://docs.spring.io/spring-data/couchbase/docs/current/reference/html/#couchbase.repository.indexing

您现在不需要创建索引,只需确保您的数据库中有一个主索引并且您应该能够得到一些东西 运行ning:

CREATE PRIMARY INDEX ON MY_BUCKET

这是一个例子:

https://github.com/deniswsrosa/spring-data-couchbase-quickstart

只需运行class“QuickStartCouchbase”,应用程序启动后,应调用“Cmd运行ner”中的方法“运行”。

我认为您需要在 pom.xml 中包含 spring-boot-starter-web。在没有 Web 服务器的情况下,spring-boot 启动并发现它无事可做,因此它会停止。