spring源码分析之认识spring

扫码关注公众号:Java 技术驿站

发送:vip
将链接复制到本浏览器,永久解锁本站全部文章

【公众号:Java 技术驿站】 【加作者微信交流技术,拉技术群】

1.什么是spring?

Spring 是一个开源的轻量级 Java SE(Java 标准版本)/Java EE(Java 企业版本)开发应用框架,其目的是用于 简化企业级应用程序开发。

Spring 框架除了帮我们管理对象及其依赖关系,还提供像通用日志记录、性能统计、安全控制、异常处理等面向切面 的能力,还能帮我管理最头疼的数据库事务重点内容,本身提供了一套简单的 JDBC 访问实现,提供与第三方数据访问框架集 成(如 Hibernate、JPA),与各种 Java EE 技术整合(如 Java Mail、任务调度等等),提供一套自己的 web 层框 架 Spring MVC、而且还能非常简单的与第三方 web 框架集成。从这里我们可以认为 Spring 是一个超级粘合平台, 除了自己提供功能外,还提供粘合其他技术和框架的能力,从而使我们可以更自由的选择到底使用什么技术进行开发。

2.为什么要用spring?

Spring 是为了简化开发。主要采取了 4 个关键策略:
1,基于 POJO 的轻量级和最小侵入性编程;
2,通过依赖注入和面向接口松耦合;
3,基于切面和惯性进行声明式编程;
4,通过切面和模板减少样板式代码;
而他主要是通过:面向 Bean、依赖注入以及面向切面这三种方式来达成的。

控制反转(IoC)

  • Spring 是面向 Bean 的编程(Bean Oriented Programming, BOP),Bean 在 Spring 中才是真正 的主角。Bean 在 Spring 中作用就像 Object 对 OOP 的意义一样,Spring 中没有 Bean 也就没有 Spring 存在的意义。Spring 提供了 IOC 容器通过配置文件或者注解的方式来管理对象之间的依赖关 系。
  • 在典型的 IOC 场景中,容器创建了所有对象,并设置必要的属性将它们连接在一起,决定什么时间 调用方法。

依赖注入DI

spring 设计的核心 org.springframework.beans 包(架构核心是 org.springframework.core 包), 它的设计目标是与 JavaBean 组件一起使用。这个包通常不是由用户直接使用,而是由服务器将其用作 其他多数功能的底层中介。下一个最高级抽象是 BeanFactory 接口,它是工厂设计模式的实现,允许 通过名称创建和检索对象。BeanFactory 也可以管理对象之间的关系。

BeanFactory 支持两个对象模型

  • 单例:模型提供了具有特定名称的对象的共享实例,可以在查询时对其进行检索。Singleton 是 默认的也是最常用的对象模型。对于无状态服务对象很理想。
  • 原型:模型确保每次检索都会创建单独的对象。在每个用户都需要自己的对象时,原型模型最适合。
  • bean 工厂的概念是 Spring 作为 IOC 容器的基础。IOC 则将处理事情的责任从应用程序代码转移到框架。

面向切面AOP

  • 面向切面编程,即 AOP,是一种编程思想,它允许程序员对横切关注点或横切典型的职责分界线的 行为(例如日志和事务管理)进行模块化。AOP 的核心构造是方面(切面),它将那些影响多个类的行 为封装到可重用的模块中。
  • AOP 和 IOC 是补充性的技术,它们都运用模块化方式解决企业应用程序开发中的复杂问题。在典型 的面向对象开发方式中,可能要将日志记录语句放在所有方法和 Java 类中才能实现日志功能。在 AOP 方式中,可以反过来将日志服务模块化,并以声明的方式将它们应用到需要日志的组件上。当然,优势 就是 Java 类不需要知道日志服务的存在,也不需要考虑相关的代码。所以,用 Spring AOP 编写的应 用程序代码是松散耦合的。
  • AOP 的功能完全集成到了 Spring 事务管理、日志和其他各种特性的上下文中。
  • Authentication 权限认证
  • Logging 日志
  • Transctions Manager 事务
  • Lazy Loading 懒加载
  • Context Process 上下文处理
  • Error Handler 错误跟踪(异常捕获机制) Cache 缓存

来源:http://ddrv.cn

赞(0) 打赏
版权归原创作者所有,任何形式的转载请联系博主:daming_90:Java 技术驿站 » spring源码分析之认识spring

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏