BeanInitCostTimeBeanPostProcessor.java 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. package com.java110.db;
  2. import org.springframework.beans.BeansException;
  3. import org.springframework.beans.factory.config.BeanPostProcessor;
  4. import org.springframework.stereotype.Component;
  5. import java.util.Map;
  6. import java.util.Objects;
  7. import java.util.concurrent.ConcurrentHashMap;
  8. /**
  9. * 此类主要用于调优,使用 打印bean的加载时间
  10. */
  11. @Component
  12. public class BeanInitCostTimeBeanPostProcessor implements BeanPostProcessor {
  13. private static Map<String, Long> startTime = new ConcurrentHashMap<>();
  14. @Override
  15. public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
  16. startTime.put(beanName, System.currentTimeMillis());
  17. return bean;
  18. }
  19. @Override
  20. public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
  21. if (Objects.nonNull(startTime.get(beanName))) {
  22. long time = System.currentTimeMillis() - startTime.get(beanName);
  23. if(time>1000) {
  24. System.out.println("beanName=" + beanName + ",costTime=" + time);
  25. }
  26. }
  27. return bean;
  28. }
  29. }