ConditionalOnProperty详解
-
控制配置类是否生效
-
confitionalonproperty里面的参数
public @interface ConditionalOnProperty { String[] value() default {}; //与ConfigurationProperties中的prefix相同 String prefix() default ""; //获取配置文件中与name中参数同名的配置项的值 String[] name() default {}; //与name()获得的值比较如果相同则生成该配置项,不同则不生成 String havingValue() default ""; //为false时当配置文件中不存在name()则不生成配置项 //为true时当配置文件中不存在name()时也会生成配置项 boolean matchIfMissing() default false;
-
例子
package com.zjb.conf; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Configuration; /** * @author zhaojianbo */ @Configuration @ConfigurationProperties(prefix = "test") @ConditionalOnProperty(prefix = "test", name = "enable", havingValue = "true", matchIfMissing = true) public class PersonConfig { private String name; private String password; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } @Override public String toString() { return "PersonConfig{" + "name='" + name + '\'' + ", password='" + password + '\'' + '}'; } } package com.zjb.controller; import com.zjb.conf.PersonConfig; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; /** * @author zhaojianbo */ @RestController @RequestMapping("/config") @EnableConfigurationProperties(Man.class) public class HelloController { @Autowired PersonConfig personConfig; @RequestMapping("personConfig") public String personConfig() { try { return personConfig.toString(); }catch (Exception e) { return "sorry"; } } }