场景复现
举个例子,针对不同的设备的内存的不同加载一些资源的时候需要采取不同的策略,比如,在内存比较大的设备,可以一次性加载,繁殖需要使用懒加载,这个时候我们就可以采用配置文件+配置中心去控制了
@ConditionalOnProperty
@ConditionalOnProperty是Spring Boot中的一个注解,它可以用来控制某个Bean的创建和激活。它的作用是通过读取配置文件中的属性值来决定是否创建或激活某个Bean。当配置文件中的属性值与@ConditionalOnProperty的要求相符时,才会创建或激活该Bean。
代码
策略类的父接口
public interface LoadModelStrategy {
void loadModel(List<Speaker> speakers);
}
策略类抽象类
public abstract class AbstractLoadModelStrategy implements LoadModelStrategy{
public static boolean checkFileExist(String filePath) {
return new File(filePath).exists();
}
}
实现类
@Slf4j
public class LazyLoadModelStrategy extends AbstractLoadModelStrategy{
@Override
public void loadModel(List<Speaker> speakers) {
log.info("懒加载");
}
}
@Slf4j
public class PreloadedLoadModelStrategy extends AbstractLoadModelStrategy {
@Override
public void loadModel(List<Speaker> speakers) {
log.info("立即加载");
}
}
配置类
@Configuration
public class LoadModelConfig {
@Bean
@ConditionalOnProperty(name = "test.strategy",havingValue = "lazy")
public LoadModelStrategy lazyLoadModelStrategy(){
return new LazyLoadModelStrategy();
}
@Bean
@ConditionalOnProperty(name = "test.strategy",havingValue = "preloaded")
public LoadModelStrategy preloadedLoadModelStrategy(){
return new PreloadedLoadModelStrategy();
}
}
配置文件
test:
strategy: preloaded
消费者
@Slf4j
@Component
@ConfigurationProperties(prefix = "test")
public class InitConfig implements CommandLineRunner {
@Resource
private LoadModelStrategy loadModelStrategy;
// 执行初始化逻辑
@Override
public void run(String... args) throws Exception {
log.info("进入初始化方法");
log.info("loadModelStrategy:{}", loadModelStrategy);
}
}
效果展示
立即加载
懒加载
原文地址:https://blog.csdn.net/weixin_44808225/article/details/134666104
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_5517.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。