开封淘宝网站建设,佛山市品牌网站建设价格,建设项目管理公司网站,南宁住房和城乡建设部网站场景复现 举个例子#xff0c;针对不同的设备的内存的不同加载一些资源的时候需要采取不同的策略#xff0c;比如#xff0c;在内存比较大的设备#xff0c;可以一次性加载#xff0c;繁殖需要使用懒加载#xff0c;这个时候我们就可以采用配置文件配置中心去控制了 Cond… 场景复现 举个例子针对不同的设备的内存的不同加载一些资源的时候需要采取不同的策略比如在内存比较大的设备可以一次性加载繁殖需要使用懒加载这个时候我们就可以采用配置文件配置中心去控制了 ConditionalOnProperty ConditionalOnProperty是Spring Boot中的一个注解它可以用来控制某个Bean的创建和激活。它的作用是通过读取配置文件中的属性值来决定是否创建或激活某个Bean。当配置文件中的属性值与ConditionalOnProperty的要求相符时才会创建或激活该Bean。 ConditionalOnProperty有以下几个参数 name要检查的属性的名称havingValue要检查的属性的值matchIfMissing如果配置文件中没有该属性是否匹配。 代码
策略类的父接口
public interface LoadModelStrategy {void loadModel(ListSpeaker speakers);
}策略类抽象类
public abstract class AbstractLoadModelStrategy implements LoadModelStrategy{public static boolean checkFileExist(String filePath) {return new File(filePath).exists();}
}实现类
Slf4j
public class LazyLoadModelStrategy extends AbstractLoadModelStrategy{Overridepublic void loadModel(ListSpeaker speakers) {log.info(懒加载);}
}
Slf4j
public class PreloadedLoadModelStrategy extends AbstractLoadModelStrategy {Overridepublic void loadModel(ListSpeaker speakers) {log.info(立即加载);}
}
配置类
Configuration
public class LoadModelConfig {BeanConditionalOnProperty(name test.strategy,havingValue lazy)public LoadModelStrategy lazyLoadModelStrategy(){return new LazyLoadModelStrategy();}BeanConditionalOnProperty(name test.strategy,havingValue preloaded)public LoadModelStrategy preloadedLoadModelStrategy(){return new PreloadedLoadModelStrategy();}
}
配置文件
test:strategy: preloaded
消费者
Slf4j
Component
ConfigurationProperties(prefix test)
public class InitConfig implements CommandLineRunner {Resourceprivate LoadModelStrategy loadModelStrategy;// 执行初始化逻辑Overridepublic void run(String... args) throws Exception {log.info(进入初始化方法);log.info(loadModelStrategy:{}, loadModelStrategy);}
}效果展示
立即加载 懒加载