zoukankan      html  css  js  c++  java
  • 注入

    Spring 依赖注入的 几种方式

     

    IOC: 控制反转,我觉得很大意义上 是基于类的管理的
    DI:   依赖注入,可以是在一个类中注入另一个类,也可以是在一个类中注入另一些 基本数据类型数据(整型等),当然也可以是字符串

    先来看依赖于xml 中配置 bean 的 注入方式:
    一: set get 注入  (也是最长用的注入方式)
    public Class ClassA{
      private ClassB classB;
      private String  string;
      ...
      set 、get 方法
    }

    来看 我们在 spring-servlet.xml 中的配置
    <beans....>
      <bean id="beanID" class="ClassA">
        <property name="classB" ref="ClassBID" />
        <property name="string" type="java.lang.String" value="zhangSan" />
      </bean>

      <bean id="ClassBID" class="ClassB">
    <beans>

    二: 构造方法注入
    public Class ClassA{
      private ClassB classB;
      private String string;
      ...
      public ClassA(ClassB classB,String string){
        this.classB = classB;
        this.string = string;
      }
    }

    再来看基于 构造方法的注入方式在 xml 中的配置
    <beans...>
      <bean id="beanID" class="ClassA">
        <constructor-arg index="0" type="ClassB" ref ="ClassBID" />
        <constructor-arg index="1" type="java.lang.String" value="zhangsan" />
      </bean>  <bean id="ClassBID" ref="ClassB"></bean>

    </beans>

    ----------------------------------------------------------------------------------
    应用xml 来配置bean 的好处 松耦合,在以后要修改 类之间的 依赖关系 时,直接修改 xml文件即可
    但是在写代码时,一会写业务类,一会切换到 xml 的配置中,思维切换,只会降低开发效率,同时为了提高 程序的内聚性,基于注解的 依赖注入方式 在spring 3.0中支持

    三:annotacation 注入
    public class ClassA {
      @Resourse// JSR 250 提供的标准注解,默认 是按照 bean 的name(id)去xml 下寻找 该bean
      private ClassB classB;
      
      @Autowired//spring 提供的注解,默认按照bean 的type 去 xml 下寻找 该bean
      @Qualifier(name="beanName")//如果xml 中配置了该type 的类 有多个,防出错,指定按照name 寻找bean
      private ClassC classC;

      /**
      *privatet String string; 基本数据类型 用注解 好像没有好的解决方案。。。
      */
      ...
      //无须再配置 set、get 或者 构造器函数
    }

    @Component("classB")// 默认类都是 singleton,可以不用指定name
    public class ClassB{
      ...
    }

    @Component
    public class ClassC{
      ...
    }
    最后来看xml 中的配置
    <beans ...>

    <context:annotation-config/>//提供对相关注解的支持
    <context:component-scan base-package="test.*"></context:component-scan>//加载xml 时 扫面 包下的注解
    /**
    * 可以不用配置 bean 类
    */
    </beans>

  • 相关阅读:
    27、BLASTN的参数
    6、R语言绘制带errorbar 的柱状图
    26、HDF5 文件格式简介
    25、转录本(transcript)组成(gtf文件的第三列)
    6、perl创建模块(Exporter)及路径 引用 嵌套 查询模块
    24、嵌合体序列Chimeras
    24、sam- 详解
    22、IDP-ASE
    21 、GPD-PSL-VCF
    EasyUI 中easyui-textbox和easyui-searchbox文本框的点击事件。
  • 原文地址:https://www.cnblogs.com/with-lj/p/7678768.html
Copyright © 2011-2022 走看看