一,概述

1)SpringIOC容器是Spring的核心内容.作用:创建对象及处理对象的依赖关系.

2)IOC容器创建对象的方式:

a)调用无参数构造器

b)带参数构造器

c)工厂创建对象:工厂类静态方法创建对象;工厂类非静态方法创建对象.

二,IOC创建对象

1)User实体类

package com.bighuan.b_create_obj;public class User {public User(){System.out.println("------创建user对象[无参构造器]----");}public User(int id, String name) {System.out.println("------创建user对象[有参构造器]----");this.id = id;this.name = name;}private int id;private String name;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public void init_user(){System.out.println("在创建user对象后初始化");}public void destroy_user(){System.out.println("IOC容器销毁,user对象回收");}@Overridepublic String toString() {return "User [id=" + id + ", name=" + name + "]";}}

2)工厂类

package com.bighuan.b_create_obj;public class ObjectFactory {public User getInstance(){return new User(112,"工厂:通过实例方法");}public static User getStaticInstance(){return new User(113,"工厂:通过静态方法");}
}

3)配置

<?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/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsd"><!-- IOC容器的配置:要创建的所有对象都在这里配置 --><!-- ******对象创建********* --><!-- 默认无参数构造器 --><bean id="user1" class="com.bighuan.b_create_obj.User"></bean><!-- 有参构造器 --><bean id="user2" class="com.bighuan.b_create_obj.User"><!-- 基本类型直接写(如int),引用类型写全名(如:java.lang.String) --><constructor-arg value="119" index="0" type="int"></constructor-arg><constructor-arg value="Leslie" index="1" type="java.lang.String"></constructor-arg></bean><!-- 定义一个字符串 --><bean id="str" class="java.lang.String"><constructor-arg value="rose"></constructor-arg></bean><!-- 有参构造器 --><bean id="user3" class="com.bighuan.b_create_obj.User"><!-- 基本类型直接写(如int),引用类型写全名(如:java.lang.String) --><constructor-arg value="119" index="0" type="int"></constructor-arg><constructor-arg index="1" type="java.lang.String" ref="str"></constructor-arg></bean><!-- 3,通过工厂创建对象 --><!-- 工厂类:实例方法 --><bean id="factory" class="com.bighuan.b_create_obj.ObjectFactory"></bean><bean id="user4" factory-bean="factory" factory-method="getInstance"></bean><!-- 工厂类:静态方法class:指定的就是工厂类factory-method:指定的就是工厂的静态方法--><bean id="user5" class="com.bighuan.b_create_obj.ObjectFactory" factory-method="getStaticInstance"></bean>
</beans>

4)测试

package com.bighuan.b_create_obj;import org.junit.Test;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;public class App {@Testpublic void testIOC() throws Exception {//bean.xml在src目录下//ApplicationContext ac = new ClassPathXmlApplicationContext("bean.xml");//创建IOC容器对象ApplicationContext ac = new ClassPathXmlApplicationContext("com/bighuan/b_create_obj/bean.xml");//获取容器中的对象User user1=(User) ac.getBean("user1");User user2=(User) ac.getBean("user2");User user3=(User) ac.getBean("user3");User user4=(User) ac.getBean("user4");User user5=(User) ac.getBean("user5");System.out.println(user1);System.out.println(user2);System.out.println(user3);System.out.println(user4);System.out.println(user5);}}

测试结果:

------创建user对象[无参构造器]----
------创建user对象[有参构造器]----
------创建user对象[有参构造器]----
------创建user对象[有参构造器]----
------创建user对象[有参构造器]----
User [id=0, name=null]
User [id=119, name=Leslie]
User [id=119, name=rose]
User [id=112, name=工厂:通过实例方法]
User [id=113, name=工厂:通过静态方法]

Spring之IOC容器相关推荐

  1. [Spring 深度解析]第6章 Spring的IoC容器系列

    6. Spring的IoC容器系列 ​ IoC容器为开发者管理对象之间的依赖关系提供了很多便利和基础服务.有许多IoC容器供开发者选择,SpringFramework的IoC核心就是其中一个,它是开源 ...

  2. 框架:简单实现Spring的IOC容器

    学习过Spring的同学都知道,Spring框架的核心就是IoC和AOP.Spring可以理解为一个工厂,负责对象的创建和对象间关系的维护.IoC即控制反转,简单点说就是原来的对象是在要使用之前通过在 ...

  3. 【Spring】IoC容器系列的设计与实现:BeanFactory和ApplicationContext

    在Spring IoC容器的设计中,我们可以看到两个主要的容器系列,一个是实现BeanFactory接口的简单容器系列,这系列容器只实现了容器的最基本功能,另一个是ApplicationContext ...

  4. spring的IOC容器

    文章目录 1. IOC.IOC容器.Bean.DI 2. 核心概念小结 3,入门案例 3.1 IOC入门案例 3.1.1 入门案例思路分析 3.1.2 入门案例代码实现 步骤1:创建Maven项目 步 ...

  5. 在servlet(或者filter或者listener)中使用spring的IOC容器

    web.xml中的加载顺序为:listener >> filter >> servlet >> spring.其中filter的执行顺序是filter- mappi ...

  6. Spring学习----IoC容器创建对象

    SpringIOC容器,是spring核心内容.功能:创建对象,处理对象的依赖关系 IOC容器创建对象: 创建对象, 有几种方式: 1) 调用无参数构造器 2) 带参数构造器 3) 工厂创建对象   ...

  7. Spring 的IOC容器系列的设计与实现:BeanFactory 和 ApplicationContext

    在Spring IOC容器的设计中,我们可以看到两个主要的容器系列,一个是实现BeanFactory接口的简单容器系列,这系列容器只实现了容器的最基本的功能,另一个是ApplicationContex ...

  8. Spring框架—IoC容器

    首先我们需要了解一下是什么是IoC.IoC是Spring的核心技术之一,全称是Inversion of Control(控制反转).最原始的创建对象的方法就是通过new来实现(手动的编写代码实现),而 ...

  9. 从源码深处体验Spring核心技术--IOC容器初体验

    开局经验之谈:可能从这一篇文章开始,小伙伴们都会有点晕车的感觉了,但是这个系列并不是只是介绍下spring表面的一些肤浅的东西,本系列的目的是为了让大家从源码层次深入理解Spring,这也是大家在未来 ...

  10. 关于Spring中IOC容器和AOP协同工作的原理理解

    1.在详细介绍 IOC 容器的工作原理前,这里先介绍一下实现 IOC 所用到的一些辅助类,包括BeanDefinition.BeanReference.PropertyValues.PropertyV ...

最新文章

  1. emv中的 部分匹配_【干货】EMV指标的精准运用
  2. 《python数据分析与挖掘实战》第八章详解
  3. sqlserver 查看锁表,解锁
  4. android bench内存测试,华为p10内存测试软件(androbench) v5.0.1 免费版
  5. 安卓学习笔记08:常用布局 - 线性布局
  6. javascript判断文件是否存在
  7. Runner站立会议06
  8. 恩施机器人编程_恩施安川机器人水切切割编程
  9. python tkinter
  10. 叶子结点和分支节点_C++笔试题之求完全二叉树叶子节点数
  11. java遍历map集合传值,Java之五种遍历Map集合的方式
  12. 数据库敏感数据加密技术
  13. 网络靶场攻防综合实验
  14. idea 关闭检查更新_intellij idea怎么关闭自动更新
  15. 图片画圈画箭头用什么软件_什么软件可以在编辑图片中画圈圈,如裁图时需要特..._网络编辑_帮考网...
  16. 使用android sqlite读取数据库的简单方法
  17. 世界杯已开赛,哪些看球设备让你觉得身临其境?
  18. leaflet绘制具有虚线框的多边形(125)
  19. win10打开软件中文乱码怎么修复
  20. 自然月合同月 生成费用

热门文章

  1. OA打造企业“最强大脑”
  2. 无线传感器网络与数据交换解析
  3. oracle数据从一个表空间导入到另外一个表空间
  4. 《那些花儿》范玮琪版
  5. 第4 章 变量、作用域和内存问题
  6. 3.分布式服务架构:原理、设计与实战 --- 服务化系统容量评估和性能保障
  7. 1.Jenkins 安装
  8. 23. 生成 core dump
  9. 19. web root (2)
  10. 3. vi 简介(3)