Spring 支持 3 种依赖注入的方式
属性注入
构造方法注入
工厂方法注入

属性注入:
属性注入即通过 setter 方法注入Bean 的属性值或依赖的对象
属性注入使用 <property> 元素, 使用 name 属性指定 Bean 的属性名称,value 属性或 <value> 子节点指定属性值
属性注入是实际应用中最常用的注入方式
注意:类必须具有显式或隐式的无参构造方法
Bean的名称可以使用id或者name,同一个Bean中id和name可以一样,也可以不一样,但是不同Bean的id和name不能重复

    <bean id="s1" name="s1" class="com.han.vo.Student"> <property name="id" value="1"></property><property name="name"><value>韩少斌</value></property><property name="phone"><value>4567890</value></property></bean> 

构造方法注入:
通过构造方法注入Bean 的属性值或依赖的对象,它保证了 Bean 实例在实例化后就可以使用。
构造器注入在 <constructor-arg > 元素里声明属性

index属性用来标识是第几个参数的,默认可以不写,按照构造方法的参数顺序
type属性用来标识该参数的类型,一般也不用写,在遇到有参数个数相同的构造方法时使用

    <bean id="s2" class="com.han.vo.Student"> <constructor-arg value="2" index="0" type="int"></constructor-arg><constructor-arg index="2" type="String"><value>57890986</value></constructor-arg><constructor-arg index="1"><value>尼古拉斯-赵四</value></constructor-arg></bean>  

工厂注入:
工厂注入分为静态工厂和实例工厂

dog为静态工厂注入,class属性指定工厂类,factiory-method指定返回实例的方法

cat为实例工厂注入,首先要配置实例工厂类的Bean,配置cat Bean时,用factory-bean来指定工厂Bean,仍然使用factory-method指定返回实例的方法

引用其它Bean
在注入时,若属性是其他Bean,则可以通过 <ref> 元素或 ref 属性为 Bean 的属性或构造方法参数指定对 Bean 的引用.

    <bean id="teacher" name="teacher0"  class="com.han.vo.Teacher"><property name="name" value="韩少斌"></property><property name="student" ref="s1"></property></bean>
    <bean id="teacher0" name="teacher0"  class="com.han.vo.Teacher"><property name="name" value="韩少斌"></property><property name="student"><ref bean="s1"/></property></bean>

内部 Bean
当 Bean 实例仅仅给一个特定的属性使用时, 可以将其声明为内部 Bean. 内部 Bean 声明直接包含在 <property> 或 <constructor-arg> 元素里, 不需要设置任何 id 或 name 属性
内部 Bean 不能在任何其他地方使用

    <bean id="teacher1" name="teacher1"  class="com.han.vo.Teacher"><property name="name" value="韩少斌"></property><property name="student"><bean id="liyuanpeng" class="com.han.vo.Student"><property name="id" value="3"></property><property name="name" value="李元鹏"></property><property name="phone" value="110"></property></bean></property></bean>

集合属性:

在 Spring中可以通过一组内置的 xml 标签(例如: <list>, <set> 或 <map>) 来配置集合属性.
配置 java.util.List 类型的属性, 需要指定 <list> 标签, 在标签里包含一些元素. 这些标签可以通过 <value> 指定简单的常量值, 通过 <ref> 指定对其他 Bean 的引用.
数组的定义和 List 一样, 都使用<list>

配置 java.util.Set 需要使用 <set> 标签, 定义元素的方法与 List 一样.

Java.util.Map 通过 <map> 标签定义, <map> 标签里可以使用多个 <entry> 作为子标签. 每个条目包含一个键和一个值.
必须在 <key> 标签里定义键,因为键和值的类型没有限制, 所以可以自由地为它们指定 <value>, <ref>, <bean> 或 <null> 元素.
可以将 Map 的键和值作为 <entry> 的属性定义: 简单常量使用 key 和 value 来定义; Bean 引用通过 key-ref 和 value-ref 属性定义
使用 <props> 定义 java.util.Properties, 该标签使用多个 <prop> 作为子标签. 每个 <prop> 标签必须定义 key 属性.

    <bean name="manager" class="com.han.vo.Manager"><property name="name" value="饲养员"></property><property name="students"><list><ref bean="s1"/><ref bean="s2"/><ref bean="s3"/><bean class="com.han.vo.Student"><property name="id" value="4"></property><property name="name" value="苏艳"></property><property name="phone" value="114"></property></bean></list></property><property name="teachers"><set><ref bean="teacher0"/><ref bean="teacher1"/><ref bean="teacher2"/><ref bean="teacher3"/></set></property><property name="ms"><map><entry key="student1" value-ref="s1"></entry><entry key="student2" value-ref="s2"></entry><entry key="student3" value-ref="s3"></entry></map></property><property name="properties"><props><prop key="driverClass">com.mysql.jdbc.Driver</prop><prop key="url">jdbc:mysql://localhost:3306/mybd</prop><prop key="user">root</prop><prop key="password">************</prop></props></property></bean>

spring学习-2 Bean的装配相关推荐

  1. Spring学习系列(二) 自动化装配Bean

    一.Spring装配-自动化装配 @Component和@ComponentScan 通过spring注解(@Component)来表明该类会作为组件类,并告知Spring要为这类创建bean,不过组 ...

  2. Spring学习5之自动装配Bean01

    前言 之前我们都是手动装配Bean,但是Spring里面有一个自动装配的方法! 一.自动装配是什么? 自动装配是Spring满足bean依赖一种方式! Spring会在上下文中自动寻找,并自动给bea ...

  3. Spring学习3 - Bean的属性、DI依赖注入三种方式

    文章目录 1. 属性设置 - XML配置文件.以及与其等价的注解形式 2. 依赖注入DI的方式 2.1 属性自动注入 - 不推荐 代码准备阶段 代码测试 2.2 子节点构造器注入 - 不推荐 2.3 ...

  4. Spring学习7之自动装配Bean03

    前言 接上节我们学习隐式的自动装配bean,今天我们学习用Java方式来配置bean! 一.如何用Java实现配置Bean 我们需要使用JavaConfig,一个配置类! 二.使用步骤 1.需要的实体 ...

  5. Spring学习6之自动装配Bean02

    前言 接上节我们使用配置文件进行了显示的配置,这节我们学习隐式的自动装配bean[重要]! 一.隐式的自动装配bean[重要] 就是使用注解进行配置,Spring2.5就支持注解开发了!!! 使用注解 ...

  6. Spring学习之Bean的配置

    本文将会介绍Spring框架中wiring beans的相关内容,包括:bean的声明与创建.在xml文件中对bean基本使用方法的配置以及Spring 3中新特性Spring Expression ...

  7. 【Spring学习】Bean生命周期

    我理解的Bean生命周期包括两个方面: Bean何时创建,何时销毁 Bean从创建到销毁的执行流程 一.Bean创建与销毁 Bean的创建时机主要由几个配置项共同来决定,包括: scope属性,决定是 ...

  8. Spring学习笔记-Bean初始化销毁

    1.bean的初始化操作 1.1通过在配置文件中,设置bean的init-method方法,destory-method方法,spring框架会通过反射机制来调用 java类 package com. ...

  9. Spring学习(七)bean装配详解之 【通过注解装配 Bean】【自动装配的歧义解决】...

    本文借鉴:Spring学习,@Bean 的用法(特此感谢!) 自动装配 1.歧义性 我们知道用@Autowired可以对bean进行注入(按照type注入),但如果有两个相同类型的bean在IOC容器 ...

最新文章

  1. 基于VLC的rtsp服务器linux平台搭建
  2. 百度搜索引擎广告SEM调用架构示意图
  3. 解题报告:线性规划与网络流24题
  4. 点云三维重建有关原理
  5. Searchable(搜索功能)(转)
  6. 用户眼中的银行信息化-我的开博感言
  7. sqlserver查看表空间
  8. Redis面试常问3 如何实现分布式锁 记住Redis的原子性
  9. 数据结构 5分钟带你搞定哈希表(建议收藏)!!!
  10. 【WCF】WCF服务库和WCF服务应用程序的区别
  11. 使用console进行 性能测试 和 计算代码运行时间
  12. 推荐一款强大的国产开源监控系统!
  13. 使用rapid-framework继承jsp页面
  14. 【路径规划】基于NSGA2实现无人机三维路径规划matlab源码
  15. sagemath matlab,开源跨平台数学软件SageMath v8.1
  16. 打开matlab只在任务栏闪一下然后就没反应了解决办法(亲试有效)
  17. 智能眼镜上可否能有“MIUI”?
  18. api 3.0 个性化地图缩放时出现白色的底图,然而 api GL缩放时显示正常,调用api 3.0 接口时,如何避免地图缩放时出现白色底图
  19. Linux运维工程师前景
  20. 射频与麦克斯韦方程组

热门文章

  1. java文本阅读器代码_java项目—文本阅读器
  2. 172_再谈 Power BI 客户帕累托(ABC)分析度量值写法
  3. 微信小程序开发--日历/日视图
  4. Cognex Visionpro-9.5 software handbook translate
  5. 罗斯蒙特流量变送器1700I12AFFMZZZ
  6. 基于JAVA融呗智慧金融微资讯移动平台小程序端计算机毕业设计源码+数据库+lw文档+系统+部署
  7. 尺度不变特征转换(SIFT)---转自维基百科
  8. C艹——ServiceController类
  9. 爬取网站视频命令行工具you-get的安装及使用方法
  10. FPGA工程师面试——时序约束