Spring系列(一) Spring的核心「建议收藏」

Spring系列(一) Spring的核心「建议收藏」Spring系列(一) Spring的核心

大家好,又见面了,我是你们的朋友全栈君。

Spring 简介

Spring 是一个开源轻量级企业应用架构,目的是为了简化企业级应用开发。(1)Spring 框架可以帮我们管理对象的生命周期,帮助我们管理对象间的依赖关系,相互协作;(2)Spring 框架提供了一种能力,帮助抽离日志,异常处理,性能统计,安全性以及数据库事务管理等,这些均可以与业务模块分离, 这些得益于Spring面向切面的特性。

Spring 特点

  1. 轻量: api简单,很少配置
  2. Bean: 专注于写业务的简单java类
  3. 松耦合: AOP,容器,DI等
  4. 万能胶: 方便与其他框架整合
  5. 设计模式: 经典设计模式

Spring 核心特性

  1. DI
  2. AOP

Spring 初衷和使命

简化开发 (这点很重要)

  1. 面向Bean 基于POJO的轻量级和最小侵入性编程;

     专注于业务代码编写,所有业务类定义均为普通java类(POJO).
  2. DI及面向接口实现松耦合;

     依赖注入: 和容器结合,由容器管理对象的创建和生命周期;DI只描述对象的创建方式,不负责创建.
     org.srpingframework.beans包是设计的核心(架构核心是org.springframework.core),BeanFacotry接口是工厂设计模式的实现,支持多种方式创建和检索对象,也可以管理对象间关系.
     BeanFactory支持两种对象模型:
             1. 单例: Singleton
             2. 原型: 每次检索创建单独的对象
     Bean 工厂的概念是Spring作为IOC容器的基础.IOC将处理对象的职责从应用程序代码转移到框架.
  3. 基于切面和惯例进行声明式编程;

     AOP是一种编程思想;
     模块化关注点的行为;
     AOP是IOC的补充性技术;
     实现了松耦合;
     AOP核心构造是切面,是规则的定义;
  4. 通过切面和模板减少模板化代码

     Tempate method 设计模式的使用, 比如JdbcTemplate类, 简化了数据库操作的重复代码(创建连接,准备语句,清理,关闭连接,异常捕获等), 让程序员只关注要执行的语句.

容器

容器通过DI管理Spring应用的对象. 管理对象的创建,依赖关系,配置和组装. Spring中的容器有多种, 大致可以分为BeanFactory工厂类和ApplicationContext应用上下文两大类. BeanFactory 提供了基本的DI支持, ApplicationContext基于BeanFactory构建, 提供应用框架级别的服务.

Bean的生命周期

  1. bean实例化
  2. bean注入属性
  3. 调用BeanNameAware.setBeanName()
  4. 调用BeanFactoryAware.setBeanFactory()方法
  5. 调用ApplicatioonContextAware.setApplicationContext()方法
  6. 调用BeanPostProcessor.postProcessBeforeInitializaion()方法
  7. 调用InitializingBean.afterPropertiesSet()方法,如果使用init-method声明了初始化方法,则也会调用初始化方法
  8. 调用BeanPostProcessor.postProcessAfterInitialization()方法
  9. bean就绪,存在上下文中
  10. 调用DisposableBean.destroy()方法, 如果destroy-method方法被声明, 也同时调用

AOP

AOP 使用场景

  1. Authentication 权限认证
  2. Logging 日志
  3. Transaction 事务
  4. Lazy Loading 懒加载
  5. Context Process 上下文处理
  6. Error Handler 错误跟踪
  7. Cache 缓存

体系结构

img_f12de9c9dd6c54afba798838e5652871.png
该图取自

  1. 核心容器: Spring最核心的部分, 除了提供应用程序上下文,还提供了许多企业服务(邮件,JNDI,EJB集成);
  2. AOP;
  3. 数据访问和集成: jdbc(模板方法),orm,transaction,jms(java message service),oxm(Object-to-XML-Mapping);
  4. Web与远程调用: MVC
  5. Instrument : 为tomcat提供织入代理功能, 用的比较少
  6. Test
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/107328.html原文链接:https://javaforall.net

(0)
上一篇 2022年4月20日 下午3:40
下一篇 2022年4月20日 下午4:00


相关推荐

  • 组播VLAN配置

    组播VLAN配置组播 VLAN 配置目 nbsp 录 1 组播 VLAN 配置 1 11 1 组播 VLAN 简介

    2026年3月18日
    2
  • 笛卡尔乘积

    笛卡尔乘积笛卡尔乘积是指在数学中 两个集合 X 和 Y 的笛卡尓积 Cartesianpro 又称直积 表示为 X nbsp nbsp Y 第一个对象是 X 的成员而第二个对象是 Y 的所有可能有序对的其中一个成员 nbsp 1 nbsp nbsp 定义编辑笛卡尔乘积是指在数学中 两个集合 X 和 Y 的笛卡尓积 Cartesianpro 又称直积 表示为 X Y 第一个对象是 X 的成员而第二个对象是 Y 的所有可能有序对的其中一个成员 3 nbsp nbsp 假设集

    2026年3月26日
    2
  • SpringCloud(七)—OpenFeign访问带有参数的控制器

    SpringCloud(七)—OpenFeign访问带有参数的控制器

    2020年11月12日
    238
  • eclipse 全局搜索

    eclipse 全局搜索惯例 我是温浩然 在 eclipse 中 有时需要用到全局搜索 可能还有人不会使用 我这里稍微说一下 Ctrl H 选择 FileSearch nbsp 是全局搜索 这里面 有几个地方可以缩小搜索范围 1 你想搜索的内容 2 是否区分大小写 选中后区分大小写 3 你想从什么文件中搜索 代表通配 可以是 aaa jsp nbsp jsp nbsp js nbsp css nbsp nbsp 4

    2026年3月18日
    2
  • java文件传输接口

    java文件传输接口跨系统的文件传输 上传 接口在系统开发中经常遇见在不同的系统 如安卓和 web 端 的文件上传 有两种方法 第一种 如果图片比较小可以采用 post 方式将图片转成 base64 的码放在 data 域中 以字符串传参的方式发送到指定的接口取出其值 多个就采用数组 这种一般试用与仅仅图片上传 且图片比较小大约 10kbz 左右太大了 base64 位比较都 http 传输数据太大 导致不能进入指定接口 第二种 采用

    2026年3月19日
    3
  • java注解生成xml和包含CDATA问题

    百度java生成xml,有一大推的文章,主要的生成方式一种使用Dom4J ,还有一种使用Jdk自带注解类! 下面主要整理我注解类的使用,(可以参考这篇文章Dom4J生成xml和包含CDATA问题)和xml中CDATA 问题的解决方法!

    2022年2月25日
    259

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号