Java 在Spring Boot中使用数据表单application.properties创建Couchbase配置类?

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

开始在spring boot中使用Couchbase Java SDK,为了访问集群、bucket和集合(SDK 3++),我创建了一个
@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()));
        }
   }