Java 在Spring Boot中使用数据表单application.properties创建Couchbase配置类?
开始在spring boot中使用Couchbase Java SDK,为了访问集群、bucket和集合(SDK 3++),我创建了一个Java 在Spring Boot中使用数据表单application.properties创建Couchbase配置类?,java,spring-boot,couchbase,spring-data-couchbase,Java,Spring Boot,Couchbase,Spring Data Couchbase,开始在spring boot中使用Couchbase Java SDK,为了访问集群、bucket和集合(SDK 3++),我创建了一个@Configuration类,如下所示: @Configuration public class Database { Cluster cluster = Cluster.connect("localhost", "Administrator", "password"); Bucket bucket
@Configuration
类,如下所示:
@Configuration
public class Database {
Cluster cluster = Cluster.connect("localhost", "Administrator", "password");
Bucket bucket = cluster.bucket("blackbox");
@Bean
public Collection collection() {
return this.bucket.defaultCollection();
}
@Bean
public Bucket bucket() {
return this.bucket;
}
@Bean
public Cluster cluster() {
return this.cluster;
}
问题是我需要使用application.properties文件中的数据。我尝试了自动连接环境来获得属性,但运气不好,而且使用@Value
的多种方法也会给我带来错误。有没有一种方法可以通过从文件中获取值并拥有可以自动连接的bean集群来配置我与DB的连接?还是我的解决方案完全错了
下面是使用@Value
创建bean集群的方法:
@Bean
public Cluster cluster(@Value("${host}" String host,@Value("${user}" String user,
@Value("${pass}" String pass) {
return Cluster.connect(host,user,pass);
}
我将类更改为以下内容并使其正常工作,但我不确定这是否是正确的解决方案:
@Autowired
private Environment env;
@Bean
public Collection collection() {
return bucket().defaultCollection();
}
@Bean
public Bucket bucket() {
return cluster().bucket(env.getProperty("storage.bucket"));
}
@Bean
public Cluster cluster() {
return Cluster.connect(env.getProperty("storage.host"),
env.getProperty("storage.username"), env.getProperty("storage.password"));
}
首先,您应该创建couchbaseProperties类
import lombok.Getter;
import lombok.Setter;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Configuration;
@Configuration
@EnableConfigurationProperties
@ConfigurationProperties(prefix = "couchbase")
@Getter
@Setter
public class CouchbaseProperties {
private String host;
private String userName;
private String password;
private String bucketName;
}
然后您应该在application.properties文件中给出参数
couchbase.host=localhost
couchbase.userName=Administrator
couchbase.password=password
couchbase.bucketName=blackbox
最后,您可以使用数据库类中的数据
@Configuration
public class Database {
private final CouchbaseProperties couchbaseProperties;
public Database(CouchbaseProperties couchbaseProperties) {
this.couchbaseProperties = couchbaseProperties;
}
@Bean
public Cluster cluster() {
return Cluster.connect(couchbaseProperties.getHost(), ClusterOptions
.clusterOptions(couchbaseProperties.getUserName(),
couchbaseProperties.getPassword()));
}
}