Bean的命名

1.不指定ID

2.指定ID

3.指定name

4.其他

____________________________________________________________________________

实例化Bean

Spring IoC容器如何实例化Bean呢?传统应用程序可以通过new和反射方式进行实例化Bean。而Spring IoC容器则需要根据Bean定义里的配置元数据使用反射机制来创建Bean。在Spring IoC容器中根据Bean定义创建Bean主要有以下几种方式:

、使用构造器实例化Bean:这是最简单的方式,Spring IoC容器即能使用默认空构造器也能使用有参数构造器两种方式创建Bean,

如以下方式指定要创建的Bean类型:

使用空构造器进行定义,使用此种方式,class属性指定的类必须有空构造器

使用有参数构造器进行定义,使用此中方式,可以使用< constructor-arg >标签指定构造器参数值,其中index表示位置,value表示常量值,也可以指定引用,指定引用使用ref来引用另一个Bean定义,后边会详细介绍:

二、使用静态工厂方式实例化Bean

使用这种方式除了指定必须的class属性,还要指定factory-method属性来指定实例化Bean的方法,而且使用静态工厂方法也允许指定方法参数,spring IoC容器将调用此属性指定的方法来获取Bean,配置如下所示:

三、使用实例工厂方式实例化Bean

使用实例工厂方法实例化Bean,使用这种方式不能指定class属性,此时必须使用factory-bean属性来指定工厂 Bean,factory-method属性指定实例化Bean的方法,而且使用实例工厂方法允许指定方法参数,方式和使用构造器方式一样,配置如下:

构造器和工厂方法的区别

构造函数配置文件

静态工厂配置文件

工厂方法的优点

  • 可读性更强

  • 调用的时候,不需要每次都创建一个新对象

  • 可以返回原返回类型的任何子类型对象

  • 代码更加简洁

通过以上例子我们已经基本掌握了如何实例化Bean了,大家是否注意到?这三种方式只是配置不一样,从获取方 式看完全一样,没有任何不同。这也是Spring IoC的魅力,Spring IoC帮你创建Bean,我们只管使用就可以了,是不是很简单。

小结

到此我们已经讲完了Spring IoC基础部分,包括IoC容器概念,如何实例化容器,Bean配置、命名及实例化, Bean获取等等。不知大家是否注意到到目前为止,我们只能通过简单的实例化Bean,没有涉及Bean之间关系。接下来 一章让我们进入配置Bean之间关系章节,也就是依赖注入。

第二章 IOC的配置使用 --《跟我学Spring》笔记 张开涛相关推荐

  1. 第二章 物理层 4 奈氏准则和香农定理 [计算机网络笔记]

    第二章 物理层 4 奈氏准则和香农定理 本笔记参考书目: 计算机网络(第8版)谢希仁 2021王道计算机网络视频公开课 本节重点: 奈氏准则和香农定理的计算/适用范围 转载请注明文章来源! 失真 失真 ...

  2. Spring入门到精通:第二章 IOC容器(XML方式):1.IOC概念

    百度百科表述: 控制反转(Inversion of Control,缩写为IOC),是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度.其中最常见的方式叫做依赖注入(Dependenc ...

  3. Spring入门到精通:第二章 IOC容器(XML方式):2.IOC演变

    前言 我们来看下IOC的演变历程,这里我们要明白设计的核心就是要降低耦合度. 假设我们有一个UserService和UserDao. 准备工作 创建UserDao: package com.kfit. ...

  4. css揭秘第二章:背景与边框,自己的学习笔记,如有错误请多指正

    1 半透明边框 width: 200px;height: 200px;background: white;border: 10px solid hsla(0, 0%, 100%, 0.5);backg ...

  5. (11)Spring Boot配置ContextPath【从零开始学Spring Boot】

    Spring boot默认是/ ,这样直接通过http://ip:port/就可以访问到index页面,如果要修改为http://ip:port/path/ 访问的话,那么需要在Application ...

  6. Spring框架IOC基础及XML的配置 第二章

    1 Spring概述 1.1 关于框架 框架的概念 框架:特指软件框架,它是我们在实际开发中解决项目需求的技术集合.运用框架可以大大简化代码的编写,缩短开发周期.同时,对后续负责项目维护的人员降低技术 ...

  7. [go学习笔记.第二章] 2.go语言的开发工具以及安装和配置SDK

    一.工具介绍: 1.Visual Studio Code 一个运行于Mac,Windows,和linux上的,默认提供Go语言的语法高亮的IED,可以安装Go语言插件,还可以支持智能提示,编译运行等功 ...

  8. 黑帽python第二版(Black Hat Python 2nd Edition)读书笔记 之 第一章 配置python环境

    黑帽python第二版(Black Hat Python 2nd Edition)读书笔记 之 第一章 配置python环境 文章目录 黑帽python第二版(Black Hat Python 2nd ...

  9. SpringBoot学习笔记-2:第二章 Spring Boot 配置

    第二章 Spring Boot 配置 1.YAML 配置 SpringBoot 全局配置文件 application.properties application.yml YAML 以数据为中心,比 ...

  10. 第二章 基于STM32F427的电机调试和时钟配置

    第二章 基于STM32F427的电机调试和时钟配置 上一章我们移植好了单片机,于是在我们兴奋地看到自己点亮了LED之后,开始着手准备驱动的设置,那么这里面又会有什么问题呢?我把我遇到的困难和问题记录在 ...

最新文章

  1. 对所写博客的几点说明
  2. 知识管理促进企业组织能力提升
  3. ABAP和Java的tag(marker) interface
  4. 大数据入门第二十天——scala入门(二)scala基础02
  5. 【转】C# 数据流详解(FileStream、MemoryStream、NetworkStream等类)
  6. 【Java】对JTable里的元素进行排序
  7. VIO Estimator::processIMU 函数
  8. centOS安装oracleDB,静默安装DBCA的时候,报错
  9. 编程范式之字符和基本类型
  10. 字符串格式连接sqlserver数据库的字段概念解释
  11. eclipse maven tomcat 部署
  12. html使用css居中
  13. IT人物——冯诺依曼
  14. H5电玩城源码+玩法比较多+UI也特别好看+纯源码系列
  15. 雷军—我十年的程序员生涯
  16. (1)输入直角三角形的两个直角边的长度a,b,求斜边c的长度 (2) 编写一个程序,用于两个数的交换
  17. 浅谈自然语言处理(NLP)和 自然语言理解(NLU)
  18. 蓝牙开发经验小结——蓝牙通讯
  19. 母亲生活在农村,今年45岁,已经买了医保,要如何配置商业保险?
  20. Parametric Diagrams

热门文章

  1. python求解二次规划_二次规划问题
  2. wap游戏的一些理解
  3. funcode seafish
  4. C语言代码实现最小二乘法线性拟合直线
  5. c oracle 参数赋值,利用c#反射实现实体类生成以及数据获取与赋值
  6. java 注入为空_Spring @Autowired 注入为 null
  7. 软考初级程序员的备考经验分享
  8. 全球单片机的主要厂商和主要型号介绍
  9. Document Star证件照大师升级版 for Mac(支持ps2021)
  10. [转]Javascript 调用MSAgent(Desc:网页中出现魔法巫师)