spring-boot - Spring Boot 和 Couchbase 连接错误
问题描述
我开始一起学习spring boot和couchbase,并实现一个简单的自定义查询。但是,当我点击 localhost:8889/agents/findByAgentId/14045 时,出现“无法访问此站点”错误。我在这里错过了什么?我将不胜感激任何回应。谢谢
这是实体类
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;
}
这是配置类
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 = $1 AND #{#n1ql.filter}")
List<Agent> findByAgentId(String agentId);
@Query("#{#n1ql.selectEntity} WHERE mobilePhone = $1 AND #{#n1ql.filter}")
List<Agent> findAgentsByPhoneNumber(String phoneNumber);
}
控制器类
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
您现在不需要创建索引,只需确保您的数据库上有一个主索引,并且您应该能够启动并运行一些东西:
CREATE PRIMARY INDEX ON MY_BUCKET
这是一个例子:
https://github.com/deniswsrosa/spring-data-couchbase-quickstart
只需运行“QuickStartCouchbase”类,在应用程序启动后,应该调用“CmdRunner”中的“run”方法。
推荐阅读
- android - RxJava2 | 如何处理一组可能
- spring-boot - 使用 Spring Data Rest 默认链接创建
- angular - 尽管新数据来自 websockets,但视图数据不会更新
- c# - 构建解决方案时,由于元数据错误,ccrewrite 失败,重写中止 -> 无法解析类型引用,仅在我的机器上失败
- mongodb - 从 apache 服务器到 mongodb 的反向代理
- r - 如何使用 R 为没有数据点的列插入占位符?
- django - Django CMS 中自定义菜单的顺序
- jquery - 在特定月份打开 jquery datepicker
- ios - 如何从自定义 UIView 调用 UIViewController 内的方法/动作?
- angular - 如何在角度 5 中固定命令行