DI概念
约 391 字大约 1 分钟
DI概念
DI
依赖反转是一种思想,无论 is-a
、 has-a
都会使用面向接口编程,接口实现后续如果有替换,如果没有 DI
,每次变更都需要修改多处代码,所以DI重要性就显得极其重要。
了解 DI
需要了解 bean
的生命周期,构造器注入、填充属性也就是 DI
依赖注入,在依赖注入时需要对对象进行查找,所以在设计时需要 Context
查找特定的 bean
。
为什么要有DI
如果没有 DI
,项目中在特定的位置就会出现下面的代码,后续需要修改默认策略怎么办?改代码。
// 这里需要改
private static final RejectedExecutionHandler defaultHandler =
new AbortPolicy();
public ThreadPoolExecutor(int corePoolSize,
int maximumPoolSize,
long keepAliveTime,
TimeUnit unit,
BlockingQueue<Runnable> workQueue,
ThreadFactory threadFactory) {
this(corePoolSize, maximumPoolSize, keepAliveTime, unit, workQueue,
// 这里需要改defaultHandler
threadFactory, defaultHandler);
}
如果代码在项目中被引用的位置很多怎么办?向 Spring
学习,不直接 new
,而是封装到一个方法中,修改范围更小。其实我们使用日志文件门面 SLF4J
也是相同原理,做到可插拔。
public static <K, V> HashMap<K, V> newHashMap(int expectedSize) {
return new HashMap<>((int) (expectedSize / DEFAULT_LOAD_FACTOR), DEFAULT_LOAD_FACTOR);
}