zoukankan      html  css  js  c++  java
  • 深入探索spring技术内幕(一): spring概述

    一、Spring是什么?

    Spring是一个开源的控制反转 ( IoC ) 和面向切面 ( AOP ) 的容器框架, 它的主要目的是简化企业开发.


    二、控制反转(IoC)

    控制反转: 所谓的控制反转就是应用本身不负责依赖对象的创建及维护, 依赖对象的创建及维护是由外部容器负责的. 

    这样控制权就由应用转移到了外部容器, 控制权的转移就是所谓的反转. 

    public class PersonServiceBean {
    	// 自己new一个对象
    	private PersonDao personDao = new PersonDaoBean();
    	public void save(Person person) {
    		personDao.save(person);
    	}
    }
    
    public class PersonServiceBean {
    	// 由spring通过set方法注入对象
    	private PersonDao personDao;
    	public void save(Person person) {
    		personDao.save(person);
    	}
    	public void setPersonDao(PersonDao personDao) {
    		this.personDao = personDao;
    	}
    }

    三、依赖注入(DI)

    依赖注入: 所谓的依赖注入就是在执行期, 由外部容器动态地将依赖对象注入到组件中. 

    为了能更好的理解依赖注入, 我们最好还是问自己两个问题:

    1. 谁依赖谁? 为什么须要依赖?

    当然是应用程序依赖于IoC容器, 应用程序须要IoC容器来提供对象须要的外部资源.

    2. 谁注入谁? 注入了什么?

    当然是IoC容器注入应用程序某个对象, 注入对象所须要的外部资源(对象, 资源, 常量数据).


    事实上IoC和DI是统一个概念的不同角度描写叙述, 相对IoC而言, '依赖注入' 明白描写叙述了被注入对象依赖IoC容器配置依赖对象. 


    四、为何要用Spring

    在项目中引入spring能够给我们带来下面优点:

    1. 减少组件之间的耦合度, 实现软件各层之间的解耦.

    2. 能够使用容器提供的众多服务, 如: 事务管理服务, 消息服务等. 当我们使用容器管理事务时, 开发者就不再须要手动控制事务, 

    也不须要处理复杂的事务传播. 

    3. 容器提供单例模式支持, 开发者不再须要自己编写实现代码. 

    4. 容器提供AOP技术, 利用它非常easy实现如权限控制等功能.

    5. 容器提供众多辅助类如: JdbcTemplate、HibernateTemplate等, 使用这些类可以加快应用的开发.

    6. spring为主流的应用框架提供了集成支持, 如集成Hibernate、JPA、Struts等, 方便我们的开发.



    五、轻量级与重量级

    spring属于轻量级框架还是重量级框架? 

    划分一个应用属于轻量级还是重量级, 主要看他使用了多少服务. 使用的服务越多, 容器就要为普通java对象做的工作越多, 

    必定会影响到应用的公布时间及执行性能. 

    对于spring容器, 它提供了非常多服务, 但这些服务并非默觉得应用打开的, 应用须要某种服务, 还须要指明使用该服务, 假设应用使用的服务非常少, 

    如: 仅仅使用spring核心服务, 那么我们能够觉得此时应用属于轻量级的, 假设应用使用了spring提供的大部分服务,这时应用就属于重量级的. 

    眼下EJB容器就由于它默觉得应用提供了EJB规范中全部的功能, 所以它属于重量级. 



  • 相关阅读:
    Linux IO接口 监控 (iostat)
    linux 防火墙 命令
    _CommandPtr 添加参数 0xC0000005: Access violation writing location 0xcccccccc 错误
    Visual Studio自动关闭
    Linux vsftpd 安装 配置
    linux 挂载外部存储设备 (mount)
    myeclipse 9.0 激活 for win7 redhat mac 亲测
    英文操作系统 Myeclipse Console 乱码问题
    Linux 基本操作命令
    linux 查看系统相关 命令
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/5352260.html
Copyright © 2011-2022 走看看