属性注入方式

  • 设值注入:也就是set注入,通过setter方法注入

    • java Bean
    private ITestDao dao;
public void setDao(ITestDao dao){
this.dao = dao
}
  • xml文件
    <bean id="..." class="...">
<property name="dao">
<ref bean="....">
</property>
</bean>
  • 构造注入:

    • 直接量:String,8种值类型都是用value标签赋值,用type属性来指定数据的类型

    • 当构造方法重载时,因参数个和参数类型不能区分时,引入 index属性来指明参数的位置

P命名空间注入

  • 引入p的schema文件

    <!-- 直接量(基本数据类型,字符串)属性的赋值方式-->
<bean id="testBiz" class="cn.bdqn.spring.loc.service.impl.TestBiz"p:age="23" p:name="jack"></bean> <!--引用Bean的赋值方式-->
<bean id ="testDao" class="cn.bdqn.spring.loc.dao.NewDao"></bean>
<bean id ="testBiz" class="cn.bdqn.spring.loc.service.impl.TestBiz" p:dao-ref="testDao"></bean>

当bean的属性中存在集合时,如:list, set ,map注入方式

<bean id="moreComplexObject" class="example.ComplexObject">
<!--当属性的返回结果是类是properties文件时-->
<property name="adminEmails">
<props>
<prop key="administrator">administrator@example.org</prop>
<prop key="support">support@example.org</prop>
<prop key="development" > development@example.org</prop>
</props>
</property>
<!--当属性的返回结果是list集合时-->
<property name="someList">
<list>
<value>a list element followed by a reference</value> <!--直接量赋值方式-->
<ref bean="myDataSource"> <!--java Bean的赋值方式-->
</list>
</property> <!--当属性的返回结果为map时-->
<property name="someMap">
<map>
<entry key="an entry" value="just some string"/>
<entry key="a ref" value-ref="myDataSoruce"/>
</map>
</property>
<!--当属性的返回结果为set时-->
<property name="someSet">
<set>
<value>just some string<value>
<ref bean="myDataSource"/>
</set>
</property>
</bean>

给元素赋值null 或者“”

<!--把属性设置为null值-->
<bean class="ExampleBean">
<property name="email">
<null/>
</property>
</bean>
<!--设置为空字符串-->
<bean class="ExampleBean">
<property name="email" value="">
</bean>
  • spring内部Bean的注入,相当于随用随new,外部的其它Bean不能使用

自动装配

  • 按类型匹配

  • 设置全局自动装配的类型

  • Spring提供的4种自动装配类型
取值 说明
no 默认值,Spring默认不进行自动装配,必须显式指定依赖对象</td
byName 根据属性我自动装配,Spring自动查找与属性名相同的id,如果找到,则自动注入,否则什么也不做</td
byType 根据的类型自动化装配,Spring自动查找与属性类型相同的Bean,如果刚好找到唯一的那个,则自动注入。如果找到多个与属性类型相同的Bean,则抛出异常,如果没有找到,就什么也不做
constructor 和byType类似,不过它针对构造方法,如果Spring找到一个Bean和构造方法的参数类型相匹配,则通过构造注入该依赖对象,如果找不到,交抛出异常

spring-Ioc(二)学习笔记的更多相关文章

  1. Spring源码学习笔记12——总结篇,IOC,Bean的生命周期,三大扩展点

    Spring源码学习笔记12--总结篇,IOC,Bean的生命周期,三大扩展点 参考了Spring 官网文档 https://docs.spring.io/spring-framework/docs/ ...

  2. spring cloud(学习笔记)高可用注册中心(Eureka)的实现(二)

    绪论 前几天我用一种方式实现了spring cloud的高可用,达到两个注册中心,详情见spring cloud(学习笔记)高可用注册中心(Eureka)的实现(一),今天我意外发现,注册中心可以无限 ...

  3. Spring 源码学习笔记10——Spring AOP

    Spring 源码学习笔记10--Spring AOP 参考书籍<Spring技术内幕>Spring AOP的实现章节 书有点老,但是里面一些概念还是总结比较到位 源码基于Spring-a ...

  4. Spring 源码学习笔记11——Spring事务

    Spring 源码学习笔记11--Spring事务 Spring事务是基于Spring Aop的扩展 AOP的知识参见<Spring 源码学习笔记10--Spring AOP> 图片参考了 ...

  5. Unity(IOC)学习笔记

    原文:Unity(IOC)学习笔记 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/m0_37591671/article/details/79432 ...

  6. Spring源码学习笔记9——构造器注入及其循环依赖

    Spring源码学习笔记9--构造器注入及其循环依赖 一丶前言 前面我们分析了spring基于字段的和基于set方法注入的原理,但是没有分析第二常用的注入方式(构造器注入)(第一常用字段注入),并且在 ...

  7. JavaEE互联网轻量级框架整合开发(书籍)阅读笔记(6):Spring IOC容器学习(概念、作用、Bean生命周期)

    一.IOC控制反转概念 控制反转(IOC)是一种通过描述(在Java中可以是XML或者是注解)并通过第三方去生产或获取特定对象的方式. 主动创建模式,责任在于开发者,而在被动模式下,责任归于Ioc容器 ...

  8. spring 中bean学习笔记

    spring 中bean 一.bean的定义和应用 1. bean 形象上类似于getXX()和setXX()的一种. 2. 由于java是面向对象的,类的方法和属性在使用中需要实例化. 3. 规律: ...

  9. 关于Spring IOC的学习和理解

    面向对象——三层架构(表现层.业务层.持久层) 三层架构:即表现层.业务层.持久层. ① 持久层:采用DAO模式,建立实体类和数据库表映射(ORM映射).也就是哪个类对应哪个表,哪个属性对应哪个列.持 ...

  10. Spring Cloud Alibaba学习笔记(1) - 整合Spring Cloud Alibaba

    Spring Cloud Alibaba从孵化器版本毕业:https://github.com/alibaba/spring-cloud-alibaba,记录一下自己学习Spring Cloud Al ...

随机推荐

  1. CSS伪类选择器实现三角形

    使用css实现常用的三角效果 项目中三角: .breadcrumb{ height: 40px; line-height: 40px; padding: 0 20px; border-top: 1px ...

  2. Python循环控制

    一.比较符 和算术操作符一样,布尔操作符也有操作顺序.在所有算术和比较操作符求值后,Python 先求值 not 操作符,然后是 and 操作符,然后是 or 操作符. 二.if控制 if name ...

  3. Android CameraX ImageAnalysis 获取视频帧

    CameraX使用ImageAnalysis分析器,可以访问缓冲区中的图像,获取视频帧数据. 准备工作 准备工作包括gradle,layout,动态申请相机权限,外部存储权限等等,大部分设置与Came ...

  4. inndy_rop

    又学习到了一个新知识 拿到题目例行检查,发现是32位的程序,放入ida中 进入main看到了一个overflow函数进入查看 存在明显的栈溢出,看到题目知道要用rop来做,但是完全没有思路, 后来发现 ...

  5. [BUUCTF]PWN——[V&N2020 公开赛]babybabypwn

    [V&N2020 公开赛]babybabypwn 附件 步骤: 例行检查,64位程序,保护全开 本地试运行一下,看看程序的大概情况 64位ida载入,看一下main函数 sub_1202()函 ...

  6. [BUUCTF]PWN——xdctf2015_pwn200

    xdctf2015_pwn200 附件 步骤 例行检查,32位程序,开启了nx保护 本地试运行一下程序,看看大概的情况 32位ida载入,习惯性的检索程序里的字符串,没有发现什么铭感的地方,直接看ma ...

  7. java对象与类

    1.设计一个用来描述汽车的类,使用类的非静态成员变量来表示汽车的车主姓名.当前的速率和当前方向盘的转向角度,使用类的非静态成员方法来表示改变汽车的速率和停车两个操作. 源代码: 1 package t ...

  8. java 图形化小工具Abstract Window Toolit 常用组件:对话框Dialog FileDialog

    对话框 Dialog是Window类的子类,是1个容器类,属于特殊组件,对话框是可以独立存在的顶级窗口,因此用法与普通窗口的用法几乎完全一样.但对话框有如下两点需要注意. (1),对话框通常依赖于其他 ...

  9. nim_duilib(4)之CheckBox

    introduction 更多控件用法,请参考 here 和 源码. 本文的代码基于这里 xml文件添加代码 基于上一篇, 继续向basic.xml中添加下面关于CheckBox的代码. xml完整源 ...

  10. 【九度OJ】题目1012:畅通工程 解题报告

    [九度OJ]题目1012:畅通工程 解题报告 标签(空格分隔): 九度OJ 原题地址:http://ac.jobdu.com/problem.php?pid=1012 题目描述: 某省调查城镇交通状况 ...