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 启动并发现它无事可做,因此它会停止。
我开始一起学习 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 启动并发现它无事可做,因此它会停止。