Spring 的设计初衷

Spring 是为解决企业级应用开发的复杂性而设计,她可以做很多事。但归根到底支撑 Spring 的仅 仅是少许的基本理念,而所有的这些基本理念都能可以追溯到一个最根本的使命:简化开发。这是一个 郑重的承诺,其实许多框架都声称在某些方面做了简化。而 Spring 则立志于全方面的简化 Java 开发。 对此,她主要采取了 4 个关键策略: 1、基于 POJO 的轻量级和最小侵入性编程; 2、通过依赖注入和面向接口松耦合; 3、基于切面和惯性进行声明式编程; 4、通过切面和模板减少样板式代码; 而他主要是通过:面向 Bean(BOP)、依赖注入(DI)以及面向切面(AOP)这三种方式来达成的。

BOP 编程伊始

Spring 是面向 Bean 的编程(Bean Oriented Programming, BOP),Bean 在 Spring 中才是真正的 主角。Bean 在 Spring 中作用就像 Object 对 OOP 的意义一样,Spring 中没有 Bean 也就没有 Spring 存在的意义。Spring 提供了 IOC 容器通过配置文件或者注解的方式来管理对象之间的依赖关系。

控制反转(其中最常见的实现方式叫做依赖注入(Dependency Injection,DI),还有一种方式叫 “依赖查找”(Dependency Lookup,DL),她在 C++、Java、PHP 以及.NET 中都运用。在最早的 Spring 中是包含有依赖注入方法和依赖查询的,但因为依赖查询使用频率过低,不久就被 Spring 移除 了,所以在 Spring 中控制反转也被直接称作依赖注入),她的基本概念是:不创建对象,但是描述创建 它们的方式。在代码中不直接与对象和服务连接,但在配置文件中描述哪一个组件需要哪一项服务。容 器 (在 Spring 框架中是 IOC 容器)负责将这些联系在一起。

在典型的 IOC 场景中,容器创建了所有对象,并设置必要的属性将它们连接在一起,决定什么时间

调用方法。

依赖注入的基本概念

Spring 设计的核心 org.springframework.beans 包(架构核心是 org.springframework.core 包),它的设计目标是与 JavaBean 组件一起使用。这个包通常不是由用户直接使用,而是由服务器将 其用作其他多数功能的底层中介。下一个最高级抽象是 BeanFactory 接口,它是工厂设计模式的实现, 允许通过名称创建和检索对象。BeanFactory 也可以管理对象之间的关系。 BeanFactory 最底层支持两个对象模型。 1,单例:提供了具有特定名称的全局共享实例对象,可以在查询时对其进行检索。Singleton 是默 认的也是最常用的对象模型。 2,原型:确保每次检索都会创建单独的实例对象。在每个用户都需要自己的对象时,采用原型模式。 Bean 工厂的概念是 Spring 作为 IOC 容器的基础。IOC 则将处理事情的责任从应用程序代码转移到 框架。

AOP 编程理念

面向切面编程,即 AOP,是一种编程思想,它允许程序员对横切关注点或横切典型的职责分界线的 行为(例如日志和事务管理)进行模块化。AOP 的核心构造是方面(切面),它将那些影响多个类的行 为封装到可重用的模块中。

AOP 和 IOC 是补充性的技术,它们都运用模块化方式解决企业应用程序开发中的复杂问题。在典 型的面向对象开发方式中,可能要将日志记录语句放在所有方法和 Java 类中才能实现日志功能。在 AOP 方式中,可以反过来将日志服务模块化,并以声明的方式将它们应用到需要日志的组件上。当然,优势 就是 Java 类不需要知道日志服务的存在,也不需要考虑相关的代码。所以,用 Spring AOP 编写的应用程序代码是松散耦合的。

AOP 的功能完全集成到了 Spring 事务管理、日志和其他各种特性的上下文中。 ​ AOP 编程的常用场景有:Authentication(权限认证)、Auto Caching(自动缓存处理)、Error Handling (统一错误处理)、Debugging(调试信息输出)、Logging(日志记录)、Transactions(事务处理) 等。

spring的设计初衷,BOP 编程伊始,依赖注入的基本概念,AOP 编程理念相关推荐

  1. 从针对接口编程到依赖注入

    1.概况说明 2.猫狗大战举例 3.说明为什么要针对接口编程,优点 4.说明为什么要"依赖抽象,不要依赖具体类" 5.说明"依赖倒置"与抽象工厂模式 6.说明& ...

  2. 详解spring的IOC控制反转和DI依赖注入

    转载 详解spring的IOC控制反转和DI依赖注入 2018-06-05 15:45:34 jiuqijack 阅读数 2945 文章标签: spring IOC控制反转 DI依赖注入 更多 分类专 ...

  3. (八)Spring之IOC控制反转、DI依赖注入介绍和使用(详解)

    文章目录 前言 Spring Spring IOC 简介 Bean IOC 概述 IOC 本质理解 Spring IOC 应用 IOC xml装配 IOC 依赖注入 IOC Bean的作用域 IoC ...

  4. 三大框架之spring框架+IoC控制反转、DI依赖注入

    三大框架:业务层框架Spring+IoC+DI 往期文章:jsp与cookie.重定向与RESTFul架构支持 下一章节: 持久层框架MyBatis 初识Spring框架 MyBatis 入门http ...

  5. Spring 的设计初衷

    Spring 是为解决企业级应用开发的复杂性而设计,她可以做很多事.但归根到底支撑Spring 的仅仅是少许的基本理念,而所有的这些基本理念都能可以追溯到一个最根本的使命:简化开发.这是一个郑重的承诺 ...

  6. 依赖注入 这样的坑游戏编程要谨慎

    1 IGame游戏公司的故事 1.1 讨论会 话说有一个叫IGame的游戏公司,正在开发一款ARPG游戏(动作&角色扮演类游戏,如魔兽世界.梦幻西游这一类的游戏).一般这类游戏都有一个基本的功 ...

  7. Spring的IOC(控制反转)与DI(依赖注入)

    Spring控制反转与依赖注入 文章目录 Spring控制反转与依赖注入 1. 控制反转(IOC) 2. 依赖注入(DI) 3. 总结 1. 控制反转(IOC) 控制反转(Inversion of C ...

  8. Spring_01 spring容器、控制反转(IOC)、依赖注入(DI)

    目录 1 什么是spring框架 2 spring框架的特点 3 spring容器 3.1 什么是spring容器 3.2 spring容器创建对象的编程步骤 3.4 spring容器创建对象的方式 ...

  9. Spring框架中的控制反转和依赖注入

    控制反转: 控制反转是用来降低代码之间的耦合度的,基本思想就是借助"第三方"实现具有依赖对象的解耦. 为什么需要控制反转,因为项目中对象或多或少存在耦合.控制反转的关键在于Ioc容 ...

最新文章

  1. Redis 官方可视化工具,功能真心强大!
  2. 美征信巨头Equifax因Struts漏洞导致数据大规模泄露
  3. Java异常处理的一些经验总结
  4. 在未启动程序情况 点击视图设计器 弹出未将对象引用窗体的解决方案
  5. bert 多义词_自然语言处理:Bert及其他
  6. 【ESP8266】安信可8266模组官方文档速查++
  7. 1月29日以后需要做的事情
  8. pv 6.3升级日志
  9. 方法论+本土特色,这个BPM平台不简单
  10. EasyClick 原生UI教程扫盲篇
  11. 分布式和集中式版本控制工具-svn,git,mercurial比较分析
  12. 随笔记录2、Android端调用系统分享文件记录
  13. 【Flutter】利用nfc_manager 读取NFC交通卡信息
  14. 应用程序框架 Application Framework
  15. 【Axure交互教程】滑块控制图片放大缩小效果
  16. IDEA下,如何在java项目中新增jsp模板文件
  17. 现在什么类型的视频最受欢迎
  18. 重庆立信计算机专业有哪些,重庆市立信职业教育中心
  19. java se中的se指什么,什么是Java SE?
  20. Hamming distance - 汉明距离

热门文章

  1. k8s create pod失败,cannot be handled as a Deployment: [pos 481]: json: expect char '' but got char '1
  2. 词频统计之《哈姆雷特》
  3. 奇迹MU服务器租用选择 真实好用 稳定不卡 还能防入侵
  4. 分布式内存数据技术为查询提速
  5. 1. Elastic Stack开篇
  6. (资源)百度云盘:驴火歌王:阅读真的很难提分第2讲:洞茶 (2013北京中考)
  7. Intrinsic Relationship Reasoning for Small Object Detection
  8. 俄政府为“俄罗斯离岸区”推出特别加密货币监管措施
  9. 定时任务一(quartz):纯java
  10. [影视推荐]黑客题材美剧—网络末日战