• 深入探索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规范中全部的功能, 所以它属于重量级. 



  • 相关阅读:
    python 之 re模块、hashlib模块
    python 之 random 模块、 shutil 模块、shelve模块、 xml模块
    python 之 time模块、datetime模块(打印进度条)
    python 之 包的使用
    python 之 序列化与反序列化、os模块
    SAP GUI 750 安装包 及 补丁3 共享
    实例:关于ALV控件可编辑的整理
    SAP 文本框实例
    SAP 日志管理
    TO_DATS() AS ABAP_DATE
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/5352260.html
Copyright © 2020-2023  润新知