Spring依賴注入

Spring框架的核心功能之一就是通过依赖注入的方式来管理Bean

依赖注入说白了就是对象之间的引用,包含互相持有引用的对象以及基本类型的参数如何去赋值;而在java中这一切过程我们是直接new对象设置值

分别包括构造函数的注入,设置值函数的注入,注入内部Bean ,注入集合


构造函数注入:

  1. 通过constructor-arg标签配置,
  2. 可以配置引用类型,可以配置基本类型
  3. 直接指定值设置value属性
   <bean class="com.ldl.test.newspring.DITextEditor" id="ditexteditor">
         <constructor-arg type="java.lang.String" value="母猪"/>
         <constructor-arg ref="checker"/>
         <!--<property name="n" value="老炮"/>-->
         <!--      <property name="spellChecker">
        <bean scope="prototype" id="spellChecker" class="com.ldl.test.newspring.SpellChecker">
            <property name="msg" value="小鸡炖蘑菇"/>
        </bean>
    </property>-->
    <!--<property name="spellChecker" ref="checker"/>-->
</bean>

** 通过设值函数注入:**

  1. 就是相当于通过set方法设置值
  2. 容器调用一个无参的构造函数或一个无参的静态方法,容器在bean上调用set设置值方法注入
  3. 通过property 标签设置属性,可以引用类型也可以直接设置值
 <bean class="com.ldl.test.newspring.SpellChecker" id="checker" scope="prototype">
 <property name="msg" value="天王蓋地虎"/>
 <property name="spellChecker" ref="checker"/>

** 注入内部bean**

  1. 实际上就是如果给内部类定义和赋值

看看例子,就是在设置参数的内部配置一个bean,对应的就是java内部类

 <bean class="com.ldl.test.newspring.DITextEditor" id="ditexteditor">
        <!--<constructor-arg type="java.lang.String" value="母猪"/>-->
        <!--<constructor-arg ref="checker"/>-->
   <property name="n" value="老炮"/>
   <property name="spellChecker">
       <bean scope="prototype" id="spellChecker" class="com.ldl.test.newspring.SpellChecker">
           <property name="msg" value="小鸡炖蘑菇"/>
       </bean>
   </property>
   <!--<property name="spellChecker" ref="checker"/>-->

</bean>

集合注入

这个也没什么可说的,看看我写的例子就知道了

<bean id="collection" class="com.ldl.test.collectionz.JavaCollection">
<property name="addressList">
   <list>
       <value>INDIA</value>
       <value>Pakistan</value>
       <value>USA</value>
   </list>
</property>
<property name="addressSet">

   <set>
       <value>AAA</value>
       <value>BBB</value>
       <value>CCC</value>
   </set>
</property>
<property name="addressMap">
   <map>
       <entry key="1" value="INDIA"/>
       <entry key="2" value="Pakistan"/>
       <entry key="3" value="USA"/>
       <entry key="a" value-ref="innera">

       </entry>
   </map>
</property>
<property name="addressProp">
   <props>
       <prop key="One">INDIA</prop>
       <prop key="Two">Pakistan</prop>
       <prop key="Three">USA</prop>
   </props>
</property>
</bean>
<bean id="innera" class="com.ldl.test.collectionz.InnerA">
<property name="mes" value="测试一下"/>
</bean>

设置null

  <bean id="..." class="exampleBean">
  <property name="email" value=""></property>
  </bean>
  <bean id="..." class="exampleBean">
     <property name="email"><null/></property>
  </bean>
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.1 spring IoC容器和beans的简介 Spring 框架的最核心基础的功能是IoC(控制反转)容器,...
    simoscode阅读 6,753评论 2 22
  • 1.1 Spring IoC容器和bean简介 本章介绍了Spring Framework实现的控制反转(IoC)...
    起名真是难阅读 2,621评论 0 8
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,993评论 19 139
  • 文章作者:Tyan博客:noahsnail.com 3.4 Dependencies A typical ente...
    SnailTyan阅读 4,206评论 2 7
  • 白狐(故事连载) (一) 午夜了,摘下坚强的面具,点亮紫色的烛,风透过轻飘飘的窗纱吹进屋子。秋天,夜凉如水,如他满...
    老姐阅读 255评论 0 0