品牌型号:联想ThinkPad X1
系统:Windows10家庭版
软件版本:Spring 5.3.7
我们在接触并了解了Spring注解的底层逻辑后,去开发项目的时候需要摸清常用的注解用法,特别是容易混淆的用于注入依赖的注解。很多刚接触Spring的新手程序员能说出部分注解名称,但是对Spring常用的注解有哪些、各自适配什么场景却是一知半解,更不懂@Qualifier这个搭配注解的真正用处,碰到了同类型下多个实现类注入就容易报错。下面就给大家介绍Spring常用的注解有哪些,Spring中注解@Qualifier的作用表述的相关内容。
一、Spring常用的注解有哪些
我们在使用Spring框架的时候,会接触到大量的配置、大量的注解,但是基本上都不需要像上学那会语文背诵那样去硬背,只需要结合当前的使用场景去使用去记忆就能知道什么时候用哪些注解了。注解并不是使用了就能自动执行各种指令,需要我们先去配置文件里开启注解扫描。

配置完毕后就要去创建Bean了,我们只需要找到需要交给Spring容器管理的类,然后根据这个类的分层。例如,这个类是Service层的类,我们就类的头顶放上一个@Service注解,如果这个类是Dao层的类,就在这个类的头顶放上一个@Repository注解,如果是Web层,就添加@Controller,如果不知道是什么层,就放上一个@Component注解,怎么样,是不是很好记。

如果这个类需要懒加载,可以考虑在类上添加一个@Lazy,如果这个类需要多实例,那么就在类名上添加一个@Scope,属性值为“prototype”。

Spring有个核心思想依赖注入DI,这就离不开@Autowired和@Resource,提到@Autowired就会考虑到它的好搭档@Qualifier,这些都是用来依赖注入的。当需要在Spring中给一个变量注入普通值的时候,我们还需要使用到@Value注解。

二、Spring中注解@Qualifier的作用表述
上面在提到Spring常用对象的时候,有聊到Spring的依赖注入,这时候肯定有很多人会想到之前面试的时候经常会被问到@Qualifier这个注解,那么这个注解到底是干什么用的呢?说到这个注解,我们就离不开@Autowired。我们在使用注解进行依赖注入的时候,只需要在属性或者setter方法上添加一个@Autowired就可以了。这个注解,会先去根据当前属性的类型查找,例如,当前属性是UserDao,会去找这个有没有UserDao及其子类,如果有且唯一,就注入到当前这个属性中。

那么,既然Autowired可以解决问题,为啥还要多来一个@Qualifier呢?要注意,有时候一个类型可能下面有很多个子实现。

如果我们这会希望通过依赖注入的是UserDaoImpl2,这该怎么做呢?把UserDaoImpl删掉?显然不可能,我们发现@Autowired貌似也没法像@Resource那样可以使用name属性指定bean。

这时候,@Qualifier的作用就体现出来了,我们可以使用@Qualifier来解决这个同类型多实例的问题。有人肯定要问,为什么@Resource可以解决了,我还要多此一举写一个@Autowired再写一个@Qualifier注解呢?要知道@Resource并不是Spring专属的注解,使用它还需要额外添加javax.annotation依赖。

以上就是Spring常用的注解有哪些,Spring中注解@Qualifier的作用表述的全部内容了。Spring中常用的注解有很多,像创建Bean的、依赖注入的、懒加载的、作用域的以及其他的,但是常用的就那么几个,几乎不需要去记,用到哪自然就想到了,多结合使用场景。在Spring中,@Qualifier注解可以辅助@Autowired解决在同类型下多实例Bean的问题,虽然@Resource可以直接解决,但是@Resource毕竟不是Spring专属的注解。