构造代码块
什么是构造代码块
只听过静态代码块,是在程序运行的过程中,加载到类 的数据里
构造代码块
运行在构造方法前面执行,如果没有构造方法,但是被Componet修饰的话,就再bean生成之前先执行
看样例
@Component
@Slf4j
public class PrepareNode implements Node<UmpAlarmModel> {
private Map<String,String> metricMapping;
{
metricMapping = Maps.newConcurrentMap();
metricMapping.put("tp50","method.tp50");
metricMapping.put("tp90","method.tp90");
metricMapping.put("tp99","method.tp99");
metricMapping.put("tp999","method.tp999");
metricMapping.put("availableRate","method.availrate");
metricMapping.put("invokeCount","method.count.total");
metricMapping.put("max","method.max");
metricMapping.put("avg","method.avg");
metricMapping.put("min","method.min");
}
}
静态代码块
静态代码块的执行顺序是和定义的顺序依赖的,写到后面就后面执行。一般和静态变量放在一起使用,用于静态变量之后
private static final SafeConcurrentHashMap<SlowLogType, SearchRequestBuilder> builders = new SafeConcurrentHashMap<>();
static {
builders.computeIfAbsent(SlowLogType.REDIS_MASTER_LATENCY,(k) -> redisSlowLogSearchRequestBuilder);
builders.computeIfAbsent(SlowLogType.REDIS_PROXY_LATENCY,(k) -> redisSlowLogSearchRequestBuilder);
builders.computeIfAbsent(SlowLogType.ES_QUERY,(k) -> esSlowLogSearchRequestBuilder);
builders.computeIfAbsent(SlowLogType.ES_INDEX,(k) -> esSlowLogSearchRequestBuilder);
};
放到了静态变量builders之后执行
原创:做时间的朋友
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示
2022-04-19 k8s中yaml配置文件剖析