AOP的不多做赘述了,说下IOC:Spring IOC 解决的是对象管理和对象依赖的问题,IOC容器可以理解为一个对象工厂,我们都把该对象交给工厂,工厂管理这些对象的创建以及依赖关系,而IOC有两个概念:控制反转及依赖注入。
每当问到@Autowired和@Resource有什么区别时,我们总会不假思索的答到:@Autowired是按照类型注入,@Resource是按照名称注入。这种说法不能说错,只能说答的不全面,那要如何使自己的回答让人眼前一亮呢,且听我慢慢道来。
你好,我是小七,这期我们来聊聊 Spring @Autowired。提及 Spring 的优势或特性,我们都会立马想起“控制反转、依赖注入”这八字真言。而 @Autowired 正是用来支持依赖注入的核心利器之一。表面上看,它仅仅是一个注解,在使用上不应该出错。
如下可以通过指定 name 或者 type 来确定唯一的实现:而 @Qualifier 注解是用来标识合格者,当 @Autowrite 和 @Qualifier 一起使用时,就相当于是通过名字来确定唯一:那可能有人就会说,我直接用 @Resource 就好了,何必用两个注解结合那么麻烦,这么一说似乎显得 @Qualifier 注解有点多余?
不过由于种种原因,我们可能还是会遇到一些循环依赖的问题,特别是在面试的过程中,面试考察循环依赖,主要是想考察候选人对 Spring 源码的熟悉程度,因为要把循环依赖这个问题解释清楚,涉及到不少 Spring 源码。
在上述代码中,OrderRepository 接口使用 @Query 注解来定义查询语句,其中 select o from Order o join o.customer c 表示查询 Order 实体类中所有属于指定关联实体类的订单信息,而 where c.name = :customerName 表示查询关联实体类中指定客户的名称。