首先,本人正在学习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模块的简单介绍的更多相关文章

  1. Python_selenium中类函数模块的简单介绍

    Python_selenium中类函数模块的简单介绍 一.demo1.py的代码如下所示 #coding:utf-8 class ClassA(object): string = "这是一个 ...

  2. node.js当中的http模块与url模块的简单介绍

    一.http模块的简单介绍 node.js当中的http内置模块可以用于创建http服务器与http客户端. 1.引包 const http = require('http'); 2.创建http服务 ...

  3. Spring基于 Annotation 的简单介绍

    tyle="margin:20px 0px 0px; font-size:14px; line-height:26px; font-family:Arial"> 1.使用 @ ...

  4. Spring IOC 源码简单分析 03 - 循环引用

    ### 准备 ## 目标 了解 Spring 如何处理循环引用 ##测试代码 gordon.study.spring.ioc.IOC03_CircularReference.java   ioc03. ...

  5. Spring IOC 源码简单分析 02 - Bean Reference

    ### 准备 ## 目标 了解 bean reference 装配的流程 ##测试代码 gordon.study.spring.ioc.IOC02_BeanReference.java   ioc02 ...

  6. Spring IOC 源码简单分析 04 - bean的初始化

      ### 准备 ## 目标 了解 Spring 如何初始化 bean 实例 ##测试代码 gordon.study.spring.ioc.IOC04_Initialization.java publ ...

  7. Spring IOC 源码简单分析 01 - BeanFactory

    ### 准备 ## 目标 了解 Spring IOC 的基础流程 ## 相关资源 Offical Doc:http://docs.spring.io/spring/docs/4.3.9.RELEASE ...

  8. Spring history&Design Philosophy 简单介绍~

    SPRING框架的介绍和历史 Spring Framework是一个开源Java应用程序框架,最初是基于依赖注入(DI)和控制反转(IoC)的原理开发的. Spring Framework已经成长为控 ...

  9. Spring IoC和AOP的介绍

    基于Spring Framework 版本:5.0.2.RELEASE IoC 概念:传统Java开发中,程序通过new主动创建对象实例,而Spring有专门的IoC容器来创建对象,具体来说就是在Sp ...

随机推荐

  1. java读取文件:文本文件

    一般使用串行方式读出或者写入文件.总的来说,使用输入流把文件内容读入内存,使用输出流把内存中的信息写出到文件.这些类位于java.io包下.输入和输出的类和方法往往是对应的 文本文件 先了解如何读写文 ...

  2. 带emoji表情弹出层的评论框,semantic+emoji picker,java.sql.SQLException: Incorrect string value: '\xF0\x9F..'

    在自己做一个项目玩时,在做评论的时候. 选中了semantic.js原型,这个在国内用的不是很多,但是在github上star数量很高,想当初我想找一个js框架是就在上面找的. semantic中文网 ...

  3. 实战分析一个运行起来会卡死的Go程序

    序言 最近一位非常热心的网友建议结合demo来分析一下goroutine的调度器,而且还提供了一个demo代码,于是便有了本文,在此对这位网友表示衷心的感谢! 这位网友提供的demo程序可能有的gop ...

  4. 树莓派也跑Docker和.NET Core

    树莓派是什么 树莓派就是一个卡片大小的迷你电脑. 安装系统 有了电脑,我们当然得先安装系统. 系统下载 https://www.raspberrypi.org/downloads/raspbian/ ...

  5. 201621123016 《Java程序设计》第十一周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多线程相关内容. 2. 书面作业 本次PTA作业题集多线程 1. 源代码阅读:多线程程序BounceThread 1.1 BallR ...

  6. 读取MySQL数据表字段信息

    TP5句式 $fieldinfo = Db::query('SHOW FULL COLUMNS FROM '.$table);//查出数据表所有字段信息Field 字段Comment 字段注释

  7. 最新的vue没有dev-server.js文件,如何进行后台数据模拟?

    最新的vue里dev-server.js被替换成了webpack-dev-conf.js 在模拟后台数据的时候直接在webpack-dev-conf.js文件中修改 第一步,在const portfi ...

  8. 解决:npm中 下载速度慢 和(无法将“nrm”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确, 然后再试一次)。

    1.解决下载速度 因为我们npm下载默认是,连接国外的服务器,所以网速不是特别好的时候,可能下不了包 安装nrm 使用 npm i nrm -g 我们的一般工具包都是下载到全局 安装完毕之后,可以运行 ...

  9. jsp内置对象分析

    1.html表单的提交方式比较: 1.1.get方式:将表单内容经过编码之后 ,通过URL发送, 使用get方式发送时有255个字符的限制. 1.2.post方式:将表单的内容通过http发送,pos ...

  10. socketserver 入门练习

    个人理解: 个人感觉socketserver其实就是为服务端专门提供的一个用于解决多用户并发访问需求的一个模块 小试牛刀: 服务端socketserver_server.py import socke ...