天天看点

依赖注入 Bean 之 注解注入

引言
  1. 这是依赖注入 Bean 属性的最后一种方式
  2. 其中针对 非 Web 项目和 Web 项目又有不同的细微差别
  3. 以下是笔记
名词解释
  1. 注解:
    1. 注解:就是一个类,使用@注解名称
    2. 开发中:使用注解 取代 xml配置文件
  2. eclipse 中 Servlet 的注解:
    1. 当创建动态web项目时候,version选择 3.0 的前提下。
    2. 此时,可以选择通过注解方式配置 Servlet,只需要在 Servlet 前面加 @WebServlet 即可。
    3. 相对旧的配置 Servlet 方式而言,最大的变化在于不需要在 xml 文件中配置。
  3. 对于非 web 项目所用注解:
    1. @Component :取代< bean class="">
    2. @Component(“id”) :取代 < bean id="" class="">
  4. 对于 web 项目,从 @Component 注解衍生出了 3 个专用注解,分别对应不同的层,以便于管理:
    1. @Repository(“名称”) :对应dao层
    2. @Service(“名称”) :对应service层
    3. @Controller(“名称”) :对应web层
    1. @Autowired :自动根据类型注入
    2. @Qualifier(“名称”) :指定自动注入的id名称
    3. @Resource(“名称”) :相当于 ④ + ⑤
    4. @ PostConstruct : 自定义初始化
    5. @ PreDestroy : 自定义销毁
Sping 使用注解准备工作
  1. Spring 默认情况下,注解处于关闭状态,此时,需要手动开启
  2. 在 beans.xml 中修改为支持注解方式
    依赖注入 Bean 之 注解注入
  3. 然后根据注解的方式具体进行调用即可
非 Web 项目示例(不分 dao,service,web 层)
  1. 首先根据上文配置 beans.xml ,开启注解
  2. 以下是两种不同注解方式的示例

@Component方式

  1. service 类
    依赖注入 Bean 之 注解注入
  2. 测试类
    依赖注入 Bean 之 注解注入

@Component(“id”)

  1. service 类
    依赖注入 Bean 之 注解注入
  2. 测试类
    依赖注入 Bean 之 注解注入
Web 项目示例(分 dao,service,web 层)

若分层而不使用注解

  1. beans.xml 配置文件
    依赖注入 Bean 之 注解注入
  2. 测试结果
    依赖注入 Bean 之 注解注入

分层且使用注解

  1. beasn.xml 配置文件
    依赖注入 Bean 之 注解注入
  2. 三者之间调用关系
    依赖注入 Bean 之 注解注入
  3. 同样的,这 3 个衍生注解也可以使用加入 id 的方式来实现精准调用
    依赖注入 Bean 之 注解注入
  4. 在这里,需要先在注解后加入 Id,然后再需还要调用的地方使用 Qualifier(“名称”) 来达到指定注解的效果。 这里仅作代码演示。

分层时使用不同名称衍生注解意义

  1. 对于 web 项目,不同层之间又有个调用与被调用的关系,一般 dao 是处于最底层被调用 ,service 处于中间层 ,web 处于更高一层。若较高一层想要调用较低一层,前提是较低一层已经被实现。
  2. 当使用这些不同的注解的时候,系统就根据不同名称对应的不同层,优先寻找 dao 层,然后在容器中创建这个对象。继而是 Service 层,web 层。
  3. 这样,当通过 Spring 方式,较高一层调用较低一层时,Spring 容器内就已经生成了这个较低层的 Bean,从而避免了调用报错的情况。