@ConditionalOnProperty配置属性作为条件

@ConditionalOnProperty配置属性作为条件_第1张图片

1.@ConditionalOnProperty​做什么用的?

主要是根据配置参数,来决定是否需要创建这个bean,这样就给了我们一个根据配置来控制Bean的选择的手段了,不启用只需要更改配置即可。

​@ConditionalOnProperty​源码

package org.springframework.boot.autoconfigure.condition;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import org.springframework.context.annotation.Conditional;

@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE, ElementType.METHOD})
@Documented
@Conditional({OnPropertyCondition.class})
public @interface ConditionalOnProperty {
    String[] value() default {};

    String prefix() default "";

    String[] name() default {};

    String havingValue() default "";

    boolean matchIfMissing() default false;
}

2.项目实际使用

配置参数

@Bean
@ConfigurationProperties("spring.datasource.druid.slave")
@ConditionalOnProperty(prefix = "spring.datasource.druid.slave", name = "enabled", havingValue = "true")
public DataSource slaveDataSource(DruidProperties druidProperties) {
    DruidDataSource dataSource = DruidDataSourceBuilder.create().build();
    return druidProperties.dataSource(dataSource);
}

3.配置


     slave:
        enabled: true
        url: jdbc:sqlserver://192.168.1.4:1433;SelectMethod=cursor;DatabaseName=demo
        username: sa
        password: 123456

4.总结

君子性非异也,善假于物也。 

你可能感兴趣的:(java,前端,数据库)