比如在application.yml里有一个这样的配置
proxy:
enable: false
需要根据这个配置的不同来做不同的业务逻辑处理。
用@Component给这个类声明是一个@Bean类,同时用@ConfigurationProperties这个来声明前缀是yml里配置的“proxy”,然后声明一个和yml配置"enable"同名的变量,配置上get和set方法。
import lombok.Getter;
import lombok.Setter;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@Setter
@Getter
@Component
@ConfigurationProperties(prefix = "proxy")
public class ProxySetting {
private boolean enable;
}
创建一个这样获取全局Bean对象的工具类
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;
/**
* 获取上下文的配置类
*/
@Component
public class SpringContextHolder implements ApplicationContextAware {
private static ApplicationContext context;
@Override
public void setApplicationContext(ApplicationContext applicationContext) {
SpringContextHolder.context = applicationContext;
}
public static <T> T getBean(Class<T> requiredType) {
return context.getBean(requiredType);
}
}
在需要用到这个yml里配置enable的地方,来做逻辑处理
ProxySetting proxySetting = SpringContextHolder.getBean(ProxySetting.class);
if (proxySetting.isEnable()) {
// 处理enable为true的时候对应的逻辑
} else {
// 处理enable为false的时候对应的逻辑
}