构造代码块

什么是构造代码块

只听过静态代码块,是在程序运行的过程中,加载到类 的数据里

构造代码块

运行在构造方法前面执行,如果没有构造方法,但是被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之后执行

posted @   SpecialSpeculator  阅读(25)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示
历史上的今天:
2022-04-19 k8s中yaml配置文件剖析
点击右上角即可分享
微信分享提示