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框架的核心.只需要进行简单的容器配置,就可以将创建对象,使用对象,销毁对象联系在一起,从而管理从创建对象到销毁对象的整个生 ...
随机推荐
- vue使用element Transfer 穿梭框实现ajax请求数据和自定义查询
vue使用element Transfer 穿梭框实现ajax请求数据和自定义查询 基于element Transfer http://element-cn.eleme.io/#/zh-CN/comp ...
- Javaweb学习笔记——(五)——————DOM&XML目录
1.表单提交方式 *使用submit提交 <form> <input type="submit" /> </form> *使用button提交表 ...
- luogu 1006 传纸条
三/四维dp,将两次传递均看作从左上而来,在dp过程中注意防止越界/重合 f[i][j][k][l]直接枚举两轮的点,如下 #include<bits/stdc++.h> #define ...
- comfirm和prompt的区别
comfirm和prompt的区别. <html> <title>测试页面</title> <head> </head> <body& ...
- E - tower HYSBZ - 4657 (网络流割点)
题目链接:https://cn.vjudge.net/contest/281959#problem/E 题目大意:中文题目 具体思路:首先,有矛盾的时候就是两个导弹的运动轨迹会相交的时候,那么我们可以 ...
- mysql 原理~ index的详解
一 简介:今天咱们来介绍下index的一些东西 二 数据的基本存储结构 1 磁盘空间被划分为许多大小相同的块(Block) 在内存中读出是页(Page). 2 一个表的这些数据块以链表的方式串联在 ...
- mysql 查询优化案例汇总
一 简介:此文章为经历过的sql案例集合和相关思路 二 案例1: 现象: 测试环境出现select语句,join2张表多次join,explain结果如下 出现 using where,using j ...
- mysql 查询优化~sql优化通用
一 简介:今天我们来探讨下SQL语句的优化基础 二 基础规则: 一 通用: 1 避免索引字段使用函数 2 避免发生隐式转换 3 order by字段需要走索引,否则会发生filesor ...
- win10如何获得管理员权限_百度经验
win10如何获得管理员权限_百度经验http://jingyan.baidu.com/article/0aa223755448db88cd0d6450.html 在右下方任务栏的“搜索web和win ...
- jquery中选择checkbox拼接成字符串,然后到后台拆分取值
jquery中选择checkbox拼接成字符串,然后到后台拆分取值 js中的代码 $("#btn").click(function(){ var chenked=$("i ...