为了说明这个问题,作者就采用伪代码+故事的方式描述了。今天小A同学来了一家公司入职,发现公司的代码对于日志的处理非常不好,全部都是在代码中直接采用硬编码输出,没有统一进行处理。代码如下小A同学,立刻就想到了,是不是可以通过AOP来对项目的日志进行统一操作呢?
你好,我是小七,这期我们来聊聊 Spring @Autowired。提及 Spring 的优势或特性,我们都会立马想起“控制反转、依赖注入”这八字真言。而 @Autowired 正是用来支持依赖注入的核心利器之一。表面上看,它仅仅是一个注解,在使用上不应该出错。
不过由于种种原因,我们可能还是会遇到一些循环依赖的问题,特别是在面试的过程中,面试考察循环依赖,主要是想考察候选人对 Spring 源码的熟悉程度,因为要把循环依赖这个问题解释清楚,涉及到不少 Spring 源码。
如下可以通过指定 name 或者 type 来确定唯一的实现:而 @Qualifier 注解是用来标识合格者,当 @Autowrite 和 @Qualifier 一起使用时,就相当于是通过名字来确定唯一:那可能有人就会说,我直接用 @Resource 就好了,何必用两个注解结合那么麻烦,这么一说似乎显得 @Qualifier 注解有点多余?
使用Spring开发框架,有时会遇到同一个接口有多个实现类的情况,这时候在代码中依赖注入该接口的话,Spring就会报错:org.springframework.beans.factory.NoUniqueBeanDefinitionException。
Spring的循环依赖问题一直是中高级Java高频面试题之一,其中的考点就在于你对Spring中bean的加载过程是否有一定的理解。循环依赖,注意,这里说的是依赖,而不是调用,这是两个概念,一定不要混淆。