开始在春季启动时使用Couchbase Java SDK,以访问群集,存储桶和集合(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集群来配置与数据库的连接?还是我的解决方案完全错误?
以下是尝试使用@Value
创建bean集群的方法:
@Bean
public Cluster cluster(@Value("${host}" String host,@Value("${user}" String user,
@Value("${pass}" String pass) {
return Cluster.connect(host,user,pass);
}
答案 0 :(得分:1)
我将类更改为以下类,并使其正常运行,但我不确定这是否是正确的解决方案:
@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"));
}
答案 1 :(得分:0)
首先,您应该创建“ 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()));
}
}