控制反转 & Ioc创建对象的基础方式
时间:2020-03-07
本文章向大家介绍控制反转 & Ioc创建对象的基础方式,主要包括控制反转 & Ioc创建对象的基础方式使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
控制反转————
- 控制:谁来控制对象的创建
传统应用程序对象是由程序本身控制创建的,使用Spring后,对象是由Spring来控制创建的(经由xml文件配置)
反转:程序本身不再创建对象,而是反过来被动的接受对象(getBean(String id))
依赖注入:就是利用set方法来进行注入的
所以,Ioc(控制反转)其实就是:对象由Spring来创建,管理,装配!
Ioc创建对象的方式(xml装配bean)
使用无参构造创建对象,然后调用set方法(底层)
<bean id="user" class="com.woshi.pojo.User"> <property name="name" value="张三"></property> </bean>
使用构造器,利用下标索引赋值(索引从0开始,存在歧义风险,类型正确的情况下可能把值付错)
<bean id="user2" class="com.woshi.pojo.User"> <constructor-arg index="0" value="李四"></constructor-arg> </bean>
使用构造器,通过参数类型赋值(存在歧义风险,如果由同类型的成员变量,会按顺序为他们赋值,提供的多余构造器需要的,会报错,少于没事,会赋给null,要是涉及到基础数据类型就会报错)
<bean id="user3" class="com.woshi.pojo.User"> <constructor-arg type="java.lang.String" value="王五"></constructor-arg> </bean>
使用构造器,通过成员变量名称赋值(不容易有歧义)
<bean id="user4" class="com.woshi.pojo.User"> <constructor-arg name="name" value="刘六"></constructor-arg> </bean>
初级的装配bean的方法就以上4种,如果使用property来装配就不要干掉无参构造器,并且保证提供相应的set方法;
如果使用构造器来装配bean,就要提供相应的构造器(倒是不必提供set方法)
原文地址:https://www.cnblogs.com/woshi123/p/12436784.html
- SpringBoot编写自定义的starter
- webpack3新特性简介
- Python机器学习算法入门之梯度下降法实现线性回归
- IronPython 2.0 beta 5
- node.js如何制作命令行工具(一)
- (28) 剖析包装类 (下) / 计算机程序的思维逻辑
- Linux进程监控工具Supervisor简易使用教程
- (29) 剖析String / 计算机程序的思维逻辑
- (27) 剖析包装类 (中) / 计算机程序的思维逻辑
- Python量子力学计算模拟以及数据可视化
- (26) 剖析包装类 (上) / 计算机程序的思维逻辑
- (25) 异常 (下) / 计算机程序的思维逻辑
- (24) 异常 (上) / 计算机程序的思维逻辑
- Python3.6新特性官方文档中文版
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Java常用API(Scanner类)
- Java中多线程的使用(超级超级详细)线程安全+线程锁原理解析+保证线程安全的三种方式 (同步代码块+同步方法+lock锁) 5
- Java匿名对象介绍
- Java常用API(Random类)
- Java常用API(String类)
- 数据分析师,你是车夫,还是拉车的驴子
- Java常用API(Arrays类)
- Java常用API(Math类)
- Static关键字的使用
- tomcat 并发优化
- Java File类基础解析 使用递归来遍历目录 2
- Java Lambda表达式
- 介绍一款 API 敏捷开发工具
- XSS(跨站脚本攻击)简单讲解
- Java中多线程的使用(超级超级详细)线程池 7