属性注入方式

  • 设值注入:也就是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. 【C/C++】最长无重复子数组

    题目描述 给定一个数组arr,返回arr的最长无重复元素子数组的长度,无重复指的是所有数字都不相同. 子数组是连续的,比如[1,2,3,4,5]的子数组有[1,2],[2,3,4]等等,但是[1,3, ...

  2. .net 5 开发部署B/S程序。

    现在.net 6 已经出来了,visualStudio 2022也发行预览版了. 自 .net5 发布,.net core 与.net framework 已经走向统一.确实越来越好用了. 现在.ne ...

  3. hbuilder打包app基本流程

    声明:本文可能用到一些工具和第三方网站,都是为了达到目的而使用的工具,绝不含有广告成分 1.下载.最新的Hbuilder X貌似不能直接创建移动app了(自己不会用),建议旧版.可去腾某讯软件中心下载 ...

  4. [BUUCTF]PWN——[BJDCTF 2nd]test

    [BJDCTF 2nd]test 步骤 根据题目,ssh连接一下靶机 登录成功后,ls看一下当前目录下的文件,根据提示可知,我们没法直接获取flag字符串,但是我们可以读取test的源码, test. ...

  5. MeteoInfo-Java解析与绘图教程(七)_图层添加站点名称或区域名称

    MeteoInfo-Java解析与绘图教程(七)_图层添加站点名称或区域名称 在上文说了用自动站的数据经过插值绘制色斑图,这种一般是在geoserver上叠加图片呈现,但遇到后端导出图片,我们又想添加 ...

  6. PowerDotNet平台化软件架构设计与实现系列(08):缓存平台

    几乎所有后端应用都会或多或少用到缓存,尤其是分布式缓存服务,以及和本地缓存构造的二级缓存.根据我们一贯的节约代码的风格,为了复用的目标,抽象出缓存平台,进行缓存管理. 考虑到很多公司都会自己造或者直接 ...

  7. shell 文件读取批量处理

    cat ./redis-keys.txt | while read myline do echo ${myline} /usr/local/bin/redis-cli -h 000.00.00.000 ...

  8. 实时&离线皮肤渲染技术(Real-time&Offline Skin Rendering)

    目录 现实皮肤模型 BSSRDF 渲染模型 [2001] Diffusion Profile(扩散剖面)[2001] 偶极子 [2002] 高斯和 [2007] Burley Normalized D ...

  9. python enumerate枚举用法总结

    enumerate()说明 enumerate()是python的内置函数enumerate在字典上是枚举.列举的意思对于一个可迭代的(iterable)/可遍历的对象(如列表.字符串),enumer ...

  10. ssh框架从页面传中文发生乱码时怎么解决,就是添加一个字符编码拦截器。用springframework自带的便可

    ssh框架从页面传中文发生乱码时怎么解决,就是添加一个字符编码拦截器.用springframework自带的便可