Springboot @ConditionalOnProperty注解
最近看了一段代码其中用到了@ConditionalOnProperty注解,直接没有了解过这个注解,今天看到了顺便了解一下
@Configuration
@MapperScan("net.bingosoft.bmsa.*.dao")
public class MybatisPlusConfig {
@Bean
@ConditionalOnProperty(prefix = "bmsa.common.open", name = "mybatis.tenant", havingValue = "true", matchIfMissing = true)
ConfigurationCustomizer mybatisConfigurationCustomizer() {
return new ConfigurationCustomizer() {
@Override
public void customize(org.apache.ibatis.session.Configuration configuration) {
MultiTenantInterceptor multiTenantPlugin = new MultiTenantInterceptor();
PropertiesLoader propertiesLoader = new PropertiesLoader("mutitenant.properties");
Properties properties = propertiesLoader.getProperties();
multiTenantPlugin.setProperties(properties);
configuration.addInterceptor(multiTenantPlugin);
}
};
}
}
prefix application.properties配置的前缀
name 属性是从application.properties配置文件中读取属性值
havingValue 配置读取的属性值跟havingValue做比较,如果一样则返回true;否则返回false。
如果返回值为false,则该configuration不生效;为true则生效
matchIfMissing = true表示如果没有在application.properties设置该属性,则默认为条件符合
上面代码的意思是:是否加载 mutitenant.properties 的配置
1.如果设置了true就启动,如果false就关闭
application.properties 配置如下
bmsa.common.open.mybatis.tenant=true
2.如果application.properties配置中没有设置就加载mutitenant.properties。