手把手教你搭个SSH框架(五)

一、背景

上篇文说了几个关键的类上的注解。controller、service、repository这三个注解是标志这个类是何种功能的注解。今天咱们再谈几个注解。

二、代码下载地址

https://github.com/shen8332402/wechatServer.git

三、项目中涉及的注解

1.spring项目中常用的变量注解。

① @Autowired

② @Resource

这两个注解都是在spring中进行依赖注入的注解。而他们之间有啥区别呢?区别如下:

1.autowired注解是spring提供的注解,而resource是J2EE自带的注解。(据说:使用@Resource可以减少代码和Spring之间的耦合,使用哪个就看你自己啦)

2.@Autowired默认按照类型方式进行bean匹配

@Resource默认按照名称方式进行bean匹配

谈到这里可能比较抽象,看下面图。

上图中我使用autowired注解注入service服务。同时使用qualifier注解指定注入的服务的实现是什么。为啥要这样注入呢?原因有三:

1.autowired注解是通过bean类型注入的,即有时候可能只是错误的注入了接口而没有注入接口实现,导致程序报错。

2.autowired注解本身不能指定bean名称,需要配合qualifier注解来指定bean名。

3.其实spring对类控制反转的时候,bean的名称就是bean在spring中的映射标志。如何表明这点,看下面第二幅图片。

上图我使用了J2EE中的注解来注入bean。可以看到resource注解是可以指定bean名称的。而且应该是必须指定。

上图,我只是简单使用了autowired注解,并没有指定bean名称。为什么也注入成功了呢?这就是spring控制反转的原因了。spring中bean的映射,key就是bean的名称,所以,只有一个实现的时候可以指定名称。不过我还是建议大家指定,这样更方便控制,语义也更好理解。

spring依赖注入还有一种手法,就是通过xml配置的方式,如下图:

下图中,我把数据源注入给jdbcTemplate。这样跟使用上面的注解本质上没啥区别。最大的区别就是:xml这种配置的方式注入bean是通过方法中属性的set方法完成的。所以,如果是通过这种xml的方式注入bean就需要提供给set方法。这就是很多时候大家必须写set方法的原因。

三、总结

本篇文章重点讲述了spring中依赖注入的方式。其实还有一种常用的方式就是通过类的方式注入。现在springboot中常用这种注入方式。不过大同小异,只要大家理解依赖注入的根源。对spring来说,咋玩儿咋是。

今天就跟大家分享到这里啦。

原创不易,求个关注,求个关注,谢谢大家啦。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180608G0BTOE00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券