zoukankan      html  css  js  c++  java
  • 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的一点点心得,说得很浅,不是很深,有错误的地方还望各位大佬指导下!

  • 相关阅读:
    线程笔记
    值类型与引用类型
    abstract抽象 抽象方法 不能有实现{} 0907
    接口
    结构
    XML初探
    javaScript中为什么会有变量提升?
    Windows 7实现自动登录(本地账户和域账户)
    WCF 提示 "由于正在读取的 XML 数据的嵌套级比配额所允许的多,因此已超出最大读取深度 (32)" 的解决办法
    也来安个家!
  • 原文地址:https://www.cnblogs.com/zhu-qi/p/9921796.html
Copyright © 2011-2022 走看看