Spring IOC模块的简单介绍
首先,本人正在学习spring,这是一点心得体会,所以本文中会有不足、错误之处,欢迎各位大佬进行指点。
其次对于框架而言,知道反射是很重要,所以建议在学会反射了后在去看看框架。
Spring:是企业级java生态应用中的一个开源、轻量级的软件开发框架(半成品)
作用:主要就是通过软件开发中的共性进行封装、抽象、组合等方式来简化软件开发过程,降低运营成本和开发周期
总结:就是用于资源整合,方便开发减少开发量。框架就是一个工具,用来方便开发的工具。
那么,我们现在介绍的spring底层运行的一些机制,所以在介绍上比较复杂,那么在整个讲解过程反可能会产生spring这么麻烦的感觉,首先在这里进行一些解释。
Spring中的核心模块:
1) IOC 模块(控制反转容器):对象创建,对象存储,对象依赖管理。
2) DATA 模块(整合JDBC,MyBatis,JPA,....)
3) MVC 模块(重点解决与表示层通讯问题)
4) AOP 模块(重点解决对象功能扩展问题)
5).............
IOC模块,
介绍:Spring中有一个核心的容器,这个容器通常称之为IOC容器,那么这个容器的核心思想是控制反转思想的实现。
它可以负责对象的创建,对象的存储(map),对象的管理(依赖查找,依赖注入)。
在框架中的地位:

创建过程:在eclipse中创建一个maven项目,添加spring依赖和xml的配置文件,然后编写一个类,在编写一个单元测试类,用于创建对象
问题:
1)如何将HelloService对象交给Spring管理?
2)Spring如何构建此类的对象?
3)Spring如何存储此对象?
其中最为关键的是spring-configs.xml文件中的Bean标签
Spring中可以通过bean标签描述由它管理的对象
1)id属性的值为bean对象的唯一标识
2)class属性的值为类全名(包名+类名)
比如:<bean id="hello" class="beans.Hello"></bean>
如何测试?
1.初始化Spring框架的IOC对象,解析XML文件,储存配置信息
比如:ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("spring-configs.xml");
2.获取Bean对象,内容包含了:何时创建、如何创建、从哪里获取对象
比如:Hello hello = ctx.getBean("hello",Hello.class);
3.应用Bean对象
比如:hello.sayHello();
4.释放资源
比如:ctx.close();
在整个Spring框架中Bean对象是核心,那么接下来我们来谈谈Bean对象的基本配置
Bean对象:在软件应用中只要是被Spring管理的所以对象都是属于Bean对象
Bean的构建方式有来两种:1.直接通过构造方法 2.通过工厂对象的实例方法
1.通过构造方法、静态方法、实例及实例方法进行构造对象 注意:在构造方法的时候都会用到反射机制
2.工厂对象:(1)通过FactoryBean的getObject方法创建类的实例,定义一个工厂对象,此类型的交给FactoryBean创建实例
(2)定义一个Bean工厂ObjectFactoryBean(要实现FactoryBean接口),此工厂要创建ObjectFactory类型对象,然后将此对象交给Spring管理。
具体的代码就是不写了,大家可以在网上搜索 Spring IOC创建Bean对象的方法 会有很多的方法和例子,大家可以自己去尝试做一下
Bean的作用域
1) singleton (这个作用域标识的对象具备全局唯一性):系统默认
2) prototype(这个作用域标识的对象每次获取都会创建新的对象)
那么Bean对象其实大家应该知道很重要了,那么接下来我就像谈谈关于Bean对象的生命周期
Bean对象是有生命周期的,它的生命周期包括了:创建、初始化、服务、销毁整个运行的过程,那么我们可以通过Init-method,destory-method属性指定bean的生命周期方法
比如:
注意:关于Bean对象的销毁是否由Spring是取决于Bean的的作用域:
1) singleton作用域的对象可以在容器关闭时销毁(会调用对象的销毁资源的方法)
2) prototype作用域的对象可以由容器创建对象,初始化对象,但不负责销毁.
这就是在学习了Spring IOC的一点点心得,说得很浅,不是很深,有错误的地方还望各位大佬指导下!
Spring IOC模块的简单介绍的更多相关文章
- Python_selenium中类函数模块的简单介绍
Python_selenium中类函数模块的简单介绍 一.demo1.py的代码如下所示 #coding:utf-8 class ClassA(object): string = "这是一个 ...
- node.js当中的http模块与url模块的简单介绍
一.http模块的简单介绍 node.js当中的http内置模块可以用于创建http服务器与http客户端. 1.引包 const http = require('http'); 2.创建http服务 ...
- Spring基于 Annotation 的简单介绍
tyle="margin:20px 0px 0px; font-size:14px; line-height:26px; font-family:Arial"> 1.使用 @ ...
- Spring IOC 源码简单分析 03 - 循环引用
### 准备 ## 目标 了解 Spring 如何处理循环引用 ##测试代码 gordon.study.spring.ioc.IOC03_CircularReference.java ioc03. ...
- Spring IOC 源码简单分析 02 - Bean Reference
### 准备 ## 目标 了解 bean reference 装配的流程 ##测试代码 gordon.study.spring.ioc.IOC02_BeanReference.java ioc02 ...
- Spring IOC 源码简单分析 04 - bean的初始化
### 准备 ## 目标 了解 Spring 如何初始化 bean 实例 ##测试代码 gordon.study.spring.ioc.IOC04_Initialization.java publ ...
- Spring IOC 源码简单分析 01 - BeanFactory
### 准备 ## 目标 了解 Spring IOC 的基础流程 ## 相关资源 Offical Doc:http://docs.spring.io/spring/docs/4.3.9.RELEASE ...
- Spring history&Design Philosophy 简单介绍~
SPRING框架的介绍和历史 Spring Framework是一个开源Java应用程序框架,最初是基于依赖注入(DI)和控制反转(IoC)的原理开发的. Spring Framework已经成长为控 ...
- Spring IoC和AOP的介绍
基于Spring Framework 版本:5.0.2.RELEASE IoC 概念:传统Java开发中,程序通过new主动创建对象实例,而Spring有专门的IoC容器来创建对象,具体来说就是在Sp ...
随机推荐
- npm安装appium server路过的坑
1.因为appium服务器是用node.js开发的,所以第一步要安装nodejs. 安装后,系统默认配置的环境变量在C盘的用户目录下,为了避免以后下载的包都放在系统盘下, 配置npm下载的包存放目录和 ...
- shell脚本函数与数组
前言 之前写过一篇关于shell脚本流程控制总结,这次继续写关于shell脚本的问题.本篇文章主要包含shell脚本中的函数以及数组的用法介绍.同时也涵盖了一些字符串处理以及shell脚本比较使用的小 ...
- flex 在父窗口监听弹出窗口里的某个按钮被点击
flex 在父窗口监听弹出窗口里的某个按钮被点击 这样可以从子窗口拿回数据在父窗口处理数据,不必再子窗口中处理.在某些情形下省去了不少麻烦. /** * 右键菜单项单击事件 * changed by ...
- IOS实时监控上传下载速度
在开发中要获取网络类型是很简单的,导入Reachability直接获取状态就行了,现在我们要做一个类似下载器的那种实时把上传下载速度显示出来. 需要用到的头文件 使用Reachability 要测速度 ...
- hihocoder #1335 : Email Merge(map+sort)
传送门 题意 分析 每次插入人名与邮箱的时候,做一次并查集,然后做一次sort即可 trick 3 a 1 first@hihocoder.com b 1 second@hihocoder.com c ...
- POJ1111【BFS】
在搜1011的时候误搜了1111,简单BFS吧,多一个X就是多四个面,每次看看他的四个面有多少个重复的,然后剪掉,最后答案加上就好了: code: //#include <bits/stdc++ ...
- HDU5119【dp背包求方案数】
题意: 有n个数,问有多少方案满足取几个数的异或值>=m; 思路: 背包思想,每次就是取或不取,然后输出>=m的方案就好了. #include <bits/stdc++.h> ...
- 51nod1639(组合数学)
题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1639 题意:中文题诶- 思路:组合数学 n根鞋带要组成一个环, ...
- bzoj 2055: 80人环游世界【有上下界有源汇最小费用最大流】
连有上下界的边(ss,i,(0,m),0),(i',t,(0,m),0),表示从任意点开始和结束 连(i,j,(0,m),d[i][j]),表示可以买票飞过去 连(i,i',(v[i],v[i]),0 ...
- 第一篇 Nosql讲解之Redis,Memchche,MongoDb的区别
本篇文章主要介绍Nosql的一些东西,以及Nosql中比较火的三个数据库Redis.Memchache.MongoDb和他们之间的区别.以下是本文章的阅读目录 一.Nosql介绍 1.Nosql简介 ...