Spring的核心之IoC容器创建对象
Spring的Ioc容器,是Spring的核心内容:
作用:对象的创建和处理对象的依赖关系。
Spring容器创建对象有以下几种方式:
1:调用无参数的构造器
<!-- 默认无参的构造器 -->
<bean id="user1" class="com.bie.po.User"></bean>
2:调用有参数构造器
<!-- 带参的构造器 ,基本数据类型直接写如int,引用数据类型写全名如java.lang.String-->
<bean id="user" class="com.bie.po.User">
<constructor-arg value="100" index="0" type="int"></constructor-arg>
<constructor-arg value="张三" index="1" type="java.lang.String"></constructor-arg>
</bean>
在Spring中通过配置文件使用ref元素引用其他JavaBean的实例对象
<!-- 定义一个字符串,值是'张三';String str=new String("张三"); -->
<bean id="str" class="java.lang.String">
<constructor-arg value="张三"></constructor-arg>
</bean>
<!-- 带参的构造器 ,基本数据类型直接写如int,引用数据类型写全名如java.lang.String-->
<bean id="user" class="com.bie.po.User">
<constructor-arg value="100" index="0" type="int"></constructor-arg>
<constructor-arg ref="str" index="1" type="java.lang.String"></constructor-arg>
</bean>
完整的applicationContext.xml(bean.xml)配置文件如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd"> <!-- IoC容器的配置,要创建的所有的对象都配置在这里 --> <!-- 默认无参的构造器 -->
<bean id="user1" class="com.bie.po.User"></bean> <!-- 定义一个字符串,值是'张三';String str=new String("张三"); -->
<bean id="str" class="java.lang.String">
<constructor-arg value="张三"></constructor-arg>
</bean> <!-- 带参的构造器 ,基本数据类型直接写如int,引用数据类型写全名如java.lang.String-->
<bean id="user" class="com.bie.po.User">
<constructor-arg value="100" index="0" type="int"></constructor-arg>
<!-- <constructor-arg value="张三" index="1" type="java.lang.String"></constructor-arg>
-->
<constructor-arg ref="str" index="1" type="java.lang.String"></constructor-arg> </bean>
</beans>
3:工厂类创建对象
3.1:工厂类,静态方法创建对象
<!-- 3:工厂类创建对象
工厂类,实例方法,必须先创建工厂
再创建user对象,用factory的实例方法
-->
<bean id="factory" class="com.bie.po.ObjectFactory"></bean>
<bean id="user3" factory-bean="factory" factory-method="getInstance"></bean>
3.2:工厂类,非静态方法创建对象
<!--
4:工厂类,静态方法,静态方法不需要实例化对象,
class指定的就是工厂类型
factory-method一定是工厂里面的静态方法
--><bean id="user" class="com.bie.po.ObjectFactory" factory-method="getStaticInstance"></bean>
完整的applicationContext.xml(bean.xml)配置文件如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd"> <!-- IoC容器的配置,要创建的所有的对象都配置在这里 --> <!-- 默认无参的构造器 -->
<bean id="user1" class="com.bie.po.User"></bean> <!-- 定义一个字符串,值是'张三';String str=new String("张三"); -->
<bean id="str" class="java.lang.String">
<constructor-arg value="张三"></constructor-arg>
</bean> <!-- 带参的构造器 ,基本数据类型直接写如int,引用数据类型写全名如java.lang.String-->
<bean id="user2" class="com.bie.po.User">
<constructor-arg value="100" index="0" type="int"></constructor-arg>
<!-- <constructor-arg value="张三" index="1" type="java.lang.String"></constructor-arg>
-->
<constructor-arg ref="str" index="1" type="java.lang.String"></constructor-arg>
</bean> <!-- 3:工厂类创建对象
工厂类,实例方法,必须先创建工厂
再创建user对象,用factory的实例方法
-->
<bean id="factory" class="com.bie.po.ObjectFactory"></bean>
<bean id="user3" factory-bean="factory" factory-method="getInstance"></bean> <!-- 4:工厂类,静态方法,静态方法不需要实例化对象,所以直接引用工厂类的class和方法 -->
<bean id="user" class="com.bie.po.ObjectFactory" factory-method="getStaticInstance"></bean>
</beans>
掌握Spring核心IoC容器,由简到繁,faghting~~~
Spring的核心之IoC容器创建对象的更多相关文章
- Spring源码解析-ioc容器的设计
Spring源码解析-ioc容器的设计 1 IoC容器系列的设计:BeanFactory和ApplicatioContext 在Spring容器中,主要分为两个主要的容器系列,一个是实现BeanFac ...
- spring之:XmlWebApplicationContext作为Spring Web应用的IoC容器,实例化和加载Bean的过程
它既是 DispatcherServlet 的 (WebApplicationContext)默认策略,又是 ContextLoaderListener 创建 root WebApplicationC ...
- Spring系列14:IoC容器的扩展点
Spring系列14:IoC容器的扩展点 回顾 知识需要成体系地学习,本系列文章前后有关联,建议按照顺序阅读.上一篇我们详细介绍了Spring Bean的生命周期和丰富的扩展点,没有阅读的强烈建议先阅 ...
- spring之IOC容器创建对象
1.术语了解 1.1组件/框架设计 侵入式设计 引入了框架,对现有的类的结构有影响:即需要实现或继承某些特定类. 例如: Struts框架非侵入式设计 引入了框架,对现有的类结构没有影响. 例如:Hi ...
- Spring 核心之IOC 容器
核心概念: IOC(Inversion of Control)控制反转:所谓控制反转,就是把原先我们代码里面需要实现的对象创建.依赖的代码,反转给容器来帮忙实现. DI(Dependency Inje ...
- 【Spring专场】「IOC容器」不看源码就带你认识核心流程以及运作原理
这是史上最全面的Spring的核心流程以及运作原理的分析指南 [Spring核心专题]「IOC容器篇」不看繁琐的源码就带你浏览Spring的核心流程以及运作原理 [Spring核心专题]「AOP容器篇 ...
- Spring Framework的核心:IOC容器的实现
2.1 Spring IoC容器概述 2.1.1 IoC容器和依赖反转模式 依赖反转的要义,如果合作对象的引用或依赖关系的管理由具体对象来完成,会导致代码的高度耦合和可测性的降低.依赖控制反转的实 ...
- Spring 源码剖析IOC容器(一)概览
目录 一.容器概述 二.核心类源码解读 三.模拟容器获取Bean ======================= 一.容器概述 spring IOC控制反转,又称为DI依赖注入:大体是先初始化bean ...
- Spring系列二:IoC 容器
还君明珠双泪垂,恨不相逢未嫁时. 概述 Spring IoC容器是Spring框架的核心.只需要进行简单的容器配置,就可以将创建对象,使用对象,销毁对象联系在一起,从而管理从创建对象到销毁对象的整个生 ...
随机推荐
- HDU - 3564 Another LIS(LIS+线段树)
http://acm.hdu.edu.cn/showproblem.php?pid=3564 题意 给出1~n的插入顺序,要求每次插入之后的LIS 分析 首先用线段树还原出最终序列.因为插入的顺序是按 ...
- 通过lua栈了解lua与c的交互
lua是如何执行的 其中分析.执行部分都是c语言实现的. lua与c的关系 lua的虚拟机是用c语言实现的,换句话说一段lua指令最终在执行时都是当作c语言来执行的,lua的global表,函数调用栈 ...
- QT_地图导航 源码下载
https://github.com/douzujun/MyMapView 主要算法讲解: 1. 计算最短路径(dijkstra算法) Step1: (1)找到最短路径已经确定的顶点,从它已经确定的顶 ...
- JAVA实现具有迭代器的线性表(单链表)
一,迭代器的基本知识: 1,为什么要用迭代器?(迭代:即对每一个元素进行一次“问候”) 比如说,我们定义了一个ADT(抽象数据类型),作为ADT的一种实现,如单链表.而单链表的基本操作中,大部分需要用 ...
- css/css3常用收集/笔记
_______________________________________________________________ css3 瀑布流 N 列 <ul><li>aa ...
- springboot(十二):springboot单元测试、打包部署
单元测试 1.在pom包中添加spring-boot-starter-test包引用 <dependency> <groupId>org.springframework.boo ...
- OO第三阶段总结
软件形式化方法历史 形式化方法的研究高潮始于20世纪60年代后期,针对当时所谓"软件危机",人们提出种种解决方法,归纳起来有两类:一是采用工程方法来组织.管理软件的开发过程:二是深 ...
- J - Long Long Message (最长公共子串)
题目链接:https://cn.vjudge.net/contest/283743#problem/J 题目大意:给你两个字符串,问你两个字符串的最长的公共子串. 具体思路:把两个字符串合在一起,然后 ...
- mysql 案例~ 分区表
一 简介:今天来聊聊分区表的概念和维护二分区的优点: 1.提高查询性能:只需要搜索特定分区,而非整张表,提高了查询速度. 2.节约维护时间:单个分区的数据装载,索引重建,备份,维护远远小于整张表的 ...
- 【docx4j】docx4j操作docx,实现替换内容、转换pdf、html等操作
主要是想要用此功插件操作docx,主要的操作就是操作段落等信息,另外,也想实现替换docx的内容,实现根据模板动态生成内容的效果,也想用此插件实现docx转换pdf. word的格式其实可以用xml来 ...