枚举

不知道你有没有发现,Spring Boot 是天然支持枚举方式注入类的。

private TimeUnit timeUnit = TimeUnit.MINUTES;

类实例

有些特殊场景中我们希望能通过配置的方式自定义去初始化Bean,比如:线程池。但在初始化 Bean 的时候需要对配置的 Class 对象初始化。

public static class ExecutorSetting {
     private Class<? extends RejectedExecutionHandler> executionHandler = ThreadPoolExecutor.AbortPolicy.class;
}

Class 对象初始化实现,参考: org.apache.ibatis.logging.LogFactory.java

private static void setImplementation(Class<? extends Log> implClass) {
    try {
      Constructor<? extends Log> candidate = implClass.getConstructor(String.class);
      Log log = candidate.newInstance(LogFactory.class.getName());
      if (log.isDebugEnabled()) {
        log.debug("Logging initialized using '" + implClass + "' adapter.");
      }
      logConstructor = candidate;
    } catch (Throwable t) {
      throw new LogException("Error setting Log implementation.  Cause: " + t, t);
    }
}

迹_Jason
1k 声望65 粉丝

feeling主义者,追求极致的简约,创造最好的用户体验