Couchbase 模板配置 Class
Couchbase Template Config Class
我有一个 Couchbase 的配置 class 如下:
@Configuration
@EnableCouchbaseRepositories
public class CouchbaseConfig extends AbstractCouchbaseConfiguration{
@Value("${couchbase.serverList:127.0.0.1}")
String IPS;
@Value("${couchbase.disabled}")
boolean disabled;
private static final Logger logger = LogManager.getLogger(CouchbaseConfig.class);
@Override
protected List<String> bootstrapHosts() {
logger.info("Array List for Couch: " + IPS);
return Arrays.asList(IPS.split(","));
}
为了使团队更友好,我想添加一个禁用参数,如果一个成员在他的本地没有 couchbase,它允许应用程序仍然 运行。
可以吗?
普通沙发底座配置中存在类似的内容。
@PostConstruct
public void init() {
if (disabled)
return;
logger.info("Opening couchbase connection.");
try {
cluster = CouchbaseCluster.create(Arrays.asList(hosts.split(",")));
您可以在 Spring 4 中使用来自 @Conditional
系列的一组漂亮的注释。这允许您 Spring 只有在以下描述的条件下才考虑带注释的方法符合注释。
@Conditional
可以放在声明 @Bean
的方法上,甚至可以放在整个 @Configuration
class 上。在后一种情况下,配置中的所有 bean 以及组件扫描注释都将受制于条件。
你用Spring Boot
吗?
如果是,那么好消息! Spring Boot 打包了很多 @Conditional
口味。我认为有一个特别适合您的需求:@ConditionalOnProperty
.
不要使用 Spring 引导?
(试一试 :p)
@Conditional
annotation 位于 Spring 的核心,但您必须为其提供 Condition
实现 class,因此由您编写代码条件(不是太复杂的界面,但仍然)。
Spring 早于 4.x?
还有 Spring 3.1 中 @Profile
annotation 的旧替代方案,您可以在其中 class 将您的配置配置到配置文件中并在运行时激活一个特定的配置文件,但它是不太灵活...
试试这个:
...
@ConditionalOnProperty(prefix = "couchbase", name = "enabled", matchIfMissing = true)
@Configuration
@EnableCouchbaseRepositories
public class CouchbaseConfig extends AbstractCouchbaseConfiguration{
@Value("${couchbase.serverList:127.0.0.1}")
String IPS;
@Override
protected List<String> bootstrapHosts() {
return Arrays.asList(IPS.split(","));
}
...
}
我有一个 Couchbase 的配置 class 如下:
@Configuration
@EnableCouchbaseRepositories
public class CouchbaseConfig extends AbstractCouchbaseConfiguration{
@Value("${couchbase.serverList:127.0.0.1}")
String IPS;
@Value("${couchbase.disabled}")
boolean disabled;
private static final Logger logger = LogManager.getLogger(CouchbaseConfig.class);
@Override
protected List<String> bootstrapHosts() {
logger.info("Array List for Couch: " + IPS);
return Arrays.asList(IPS.split(","));
}
为了使团队更友好,我想添加一个禁用参数,如果一个成员在他的本地没有 couchbase,它允许应用程序仍然 运行。
可以吗?
普通沙发底座配置中存在类似的内容。
@PostConstruct
public void init() {
if (disabled)
return;
logger.info("Opening couchbase connection.");
try {
cluster = CouchbaseCluster.create(Arrays.asList(hosts.split(",")));
您可以在 Spring 4 中使用来自 @Conditional
系列的一组漂亮的注释。这允许您 Spring 只有在以下描述的条件下才考虑带注释的方法符合注释。
@Conditional
可以放在声明 @Bean
的方法上,甚至可以放在整个 @Configuration
class 上。在后一种情况下,配置中的所有 bean 以及组件扫描注释都将受制于条件。
你用Spring Boot
吗?
如果是,那么好消息! Spring Boot 打包了很多 @Conditional
口味。我认为有一个特别适合您的需求:@ConditionalOnProperty
.
不要使用 Spring 引导?
(试一试 :p)
@Conditional
annotation 位于 Spring 的核心,但您必须为其提供 Condition
实现 class,因此由您编写代码条件(不是太复杂的界面,但仍然)。
Spring 早于 4.x?
还有 Spring 3.1 中 @Profile
annotation 的旧替代方案,您可以在其中 class 将您的配置配置到配置文件中并在运行时激活一个特定的配置文件,但它是不太灵活...
试试这个:
...
@ConditionalOnProperty(prefix = "couchbase", name = "enabled", matchIfMissing = true)
@Configuration
@EnableCouchbaseRepositories
public class CouchbaseConfig extends AbstractCouchbaseConfiguration{
@Value("${couchbase.serverList:127.0.0.1}")
String IPS;
@Override
protected List<String> bootstrapHosts() {
return Arrays.asList(IPS.split(","));
}
...
}