1 构造器注入(与构造器有直接关系)
  1. 默认无参构造

  2. 3种构造方式:通过<contructor-arg>调用类中的构造器

    1. 下标

      <bean id="userService" class="com.guan.service.UserServiceImpl">
      <constructor-arg index="0" ref="apple"></constructor-arg>
      </bean>
    2. 类型

      <bean id="userService" class="com.guan.service.UserServiceImpl">
      <constructor-arg type="com.guan.dao.Fruit" ref="apple"></constructor-arg>
      </bean>
    3. 参数名(推荐使用)

      <bean id="userService" class="com.guan.service.UserServiceImpl">
      <constructor-arg name="fruit" ref="apple"></constructor-arg>
      </bean>
  3. 总结:

    (1).所有实例在配置文件加载时完成初始化

    (2).一个类在一个容器中只有一个实例(默认是单例模式)

2 set注入(重点,与set方法有直接关系)
  1. 依赖注入的概念:

    • 依赖: bean对象的创建依赖于容器
    • 注入:bean对象中的所有属性,由容器注入
  2. 测试环境搭建

public class Teacher {

private String name;

private int age;

}


```java
public class Student { private String name;
private Teacher teacher;
private int age;
private String wife;
private Properties info;
private List<String> bookList;
private String[] friends;
private Set<String> things;//compared to list collection,the item of set can't be repeat.
private Map<String,Object> eductationHistory;
}

几个集合的区别:

(1).list和数组:list是动态伸缩的,而数组不是

(2).list和set:set不能重复,list可以重复

  1. 使用配置文件进行配置

    <bean id="teacher" class="com.guan.bean.Teacher">
    <property name="name" value="蔡老师"></property>
    <property name="age" value="5"></property>
    </bean> <bean id="student" class="com.guan.bean.Student"> <property name="name" value="小明"></property>
    <!-- 1.class-->
    <property name="teacher" ref="teacher"></property> <property name="age" value="23"></property>
    <!-- 2.null-->
    <property name="wife"><null></null></property>
    <!-- 3.properties-->
    <property name="info">
    <props>
    <prop key="喜欢的歌手">许嵩</prop>
    <prop key="可能喜欢的事">写代码</prop>
    </props>
    </property>
    <!-- 4.List-->
    <property name="bookList">
    <list>
    <value>飘</value>
    <value>百年孤独(最近在看)</value>
    </list>
    </property>
    <!-- 5.array-->
    <property name="friends">
    <array>
    <value>小王</value>
    <value>小红</value>
    <value>小火</value>
    </array>
    </property>
    <!-- 6.set-->
    <property name="things">
    <set>
    <value>敲代码</value>
    <value>敲代码</value>
    <value>敲代码</value>
    </set>
    </property>
    <!-- 7.Map-->
    <property name="eductationHistory">
    <map>
    <entry key="小学" value="五里屯"></entry>
    <entry key="初中" value="张家口"></entry>
    <entry key="高中" value="三门星"></entry>
    </map>
    </property>
    </bean>

    注意:

    (1).空值是通过标签<null/>

    (2).properties是通过标签<props/><prop>组合在一起配置的

    (3),map的value值写在<entry>标签

3 其他方式
  1. p命名空间(property):可以直接在<bean>的像id一样赋值(通过set方法)
  2. c命名空间(construct):同上,只是使用的函数方式不同(通过construct方法)

注意:需要先导入命名空间

4 bean的作用域

  1. 单例模式(singletion):每次取得的都是同一个实例,一般用于单线程(默认)

    <bean id="teacher" class="com.guan.bean.Teacher" scope="singleton">
    <property name="name" value="蔡老师"></property>
    <property name="age" value="5"></property>
    </bean>
  2. 原型模式(prototype):每次get都会取得不同的实例,一般用于多线程

    <bean id="teacher" class="com.guan.bean.Teacher" scope="prototype">
    <property name="name" value="蔡老师"></property>
    <property name="age" value="5"></property>
    </bean>
  3. 其余的request,session,application只能在web开发中使用

spring——依赖注入的三种方式的更多相关文章

  1. Spring依赖注入的三种方式

    看过几篇关于Spring依赖注入的文章,自己简单总结了一下,大概有三种方式: 1.自动装配 通过配置applicationContext.xml中的标签的default-autowire属性,或者标签 ...

  2. SSH深度历险记(八) 剖析SSH核心原则+Spring依赖注入的三种方式

           于java发育.一类程序猿必须依靠类的其他方法,它是通常new依赖类的方法,然后调用类的实例,这样的发展问题new良好的班统一管理的例子.spring提出了依赖注入的思想,即依赖类不由程 ...

  3. SSH深度历险(八) 剖析SSH核心原理+Spring依赖注入的三种方式

           在java开发中,程序员在某个类中需要依赖其它类的方法,则通常是new一个依赖类再调用类实例的方法,这种开发存在的问题是new的类实例不好统一管理,spring提出了依赖注入的思想,即依 ...

  4. Spring基础05——Spring依赖注入的三种方式

    Spring支持3种依赖注入的方式:属性注入.构造器注入.工厂 1.属性注入 属性注入即通过setter方法注入Bean的属性或依赖的对象.使用<property>元素,使用name属性指 ...

  5. Spring静态注入的三种方式

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/chen1403876161/article/details/53644024Spring静态注入的三 ...

  6. ASP.NET MVC中使用Unity进行依赖注入的三种方式

    在ASP.NET MVC中使用Unity进行依赖注入的三种方式 2013-12-15 21:07 by 小白哥哥, 146 阅读, 0 评论, 收藏, 编辑 在ASP.NET MVC4中,为了在解开C ...

  7. Spring注解依赖注入的三种方式的优缺点以及优先选择

    当我们在使用依赖注入的时候,通常有三种方式: 1.通过构造器来注入: 2.通过setter方法来注入: 3.通过filed变量来注入: 那么他们有什么区别吗?应该选择哪种方式更好? 三种方式的区别小结 ...

  8. spring4之依赖注入的三种方式

    1.Setter注入 <bean id="helloWorld" class="com.jdw.spring.beans.HelloWorld"> ...

  9. spring 依赖注入的3种方式

    在实际环境中实现IoC容器的方式主要分为两大类,一类是依赖查找,依赖查找是通过资源定位,把对应的资源查找回来:另一类则是依赖注入,而Spring主要使用的是依赖注入.一般而言,依赖注入可以分为3种方式 ...

随机推荐

  1. 【CF1194F】Crossword Expert(数学 期望)

    题目链接 大意 给你\(N\)个事件,解决每个事件所需的时间有\(1/2\)的概率为\(t[i]\),\(1/2\)的概率为\((t[i]+1)\),给你总时间\(T\),在\(T\)时间内按顺序解决 ...

  2. 利用LNMP实现wordpress站点搭建

    一.部署MySQL 1.1 二进制安装mysql5.6 # 准备用户,依赖包,二进制程序 [root@nginx ~]# yum install -y libaio perl-Data-Dumper ...

  3. Java执行cmd命令、bat脚本、linux命令,shell脚本等

    1.Windows下执行cmd命令 如复制 D:\tmp\my.txt 到D:\tmp\my_by_only_cmd.txt 现文件如图示: 执行代码: private static void run ...

  4. 静态分离 & rewrit 重写 & HTTPS

    内容概要 资源分离 Nginx 的 Rewrite重写 HTTPS 内容详细 一.动静分离 1.在 nfs 中创建 NFS 挂载点 [root@nfs static]# mkdir /static [ ...

  5. Solution -「LOJ #6029」「雅礼集训 2017」市场

    \(\mathcal{Description}\)   Link.   维护序列 \(\lang a_n\rang\),支持 \(q\) 次如下操作: 区间加法: 区间下取整除法: 区间求最小值: 区 ...

  6. Solution -「AGC 002F」「AT 2000」Leftmost Ball

    \(\mathcal{Description}\)   Link.   给你 \(n\) 种颜色的球,每个球有 \(k\) 个,把这 \(n\times k\) 个球排成一排,把每一种颜色的最左边出现 ...

  7. Android Camera2获取预览尺寸和fps范围

    升降摄像头安卓手机刚上市的时候,有些很流行的app刚打开时,前置摄像头就升起来了.好像就是出来看一眼然后又收回去. 虽然我们不调用拍照功能,只是为了获取相机的信息,也是可能让摄像头升起来的. Came ...

  8. Android 连接蓝牙扫码器 无输入框

    Android 的APP 需要集成一个蓝牙扫码器, 特别的是,需要扫码的地方是没有输入框的(EditText),不能通过直觉上理解的通过对EditText输入事件进行监听处理,取得扫码结果.并且设备也 ...

  9. 什么,有狗快跑!慢着,这次手把手教你怎么过安全狗!(sql注入篇)

    前言 在记忆里上次绕安全狗还是在上次,开开心心把自己之前绕过狗的payload拿出来,发现全部被拦截了,事情一下子就严肃起来了,这就开整. 环境 本次环境如下sqli-lab的sql注入靶场 网站安全 ...

  10. Tabluea、Smartbi可视化仪表盘创建流程图分享

    你知道Tableau.Smartbi在可视化仪表盘制作步骤上有何差异吗?下面一起来了解吧~ 根据上面的流程图我们可以了解到,不同于Smartbi是在同一界面即可完成的,Tableau是由很多个工作表组 ...