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
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • Android 开机动画源码分析

    Android 开机动画源码分析Android系统在启动SystemServer进程时,通过两个阶段来启动系统所有服务,在第一阶段启动本地服务,如SurfaceFlinger,SensorService等,在第二阶段则启动一系列的Java服务。开机动画是在什么时候启动的呢?通过查看源码,Android开机动画是在启动SurfaceFlinger服务时启动的。SystemServer的main函数首先调用init1来启动本地服务,

  • python中如何把string 转换成int

    python中如何把string 转换成int用数字字符串初始化int类,就可以将整数字符串(str)转换成整数(int):In[1]:int(‘1234’)Out[1]:1234相反用整数初始化str类,就可以将整数(int)转换为对应的字符串(str):In[2]:str(1234)Out[2]:‘1234’如果字符串是浮点数,可以用字符串初始化float类,把浮点数字符串(str)转换成浮点数(float):In[3

    2022年10月26日
  • SQLSERVER PRINT语句的换行

    SQLSERVER PRINT语句的换行

  • 常用的Js调Android方法,以及Android原生传值给Js

    常用的Js调Android方法,以及Android原生传值给Js

  • 最小二乘法进行线性回归_最小二乘法简单例题

    最小二乘法进行线性回归_最小二乘法简单例题最小二乘法概述对于一元线性回归模型,假设从总体中获取了n组观察值(x1,y1)(x1,y1)(x_1,y_1),(x2,y2)(x2,y2)(x_2,y_2),…,(xn,yn)(xn,yn)(x_n,y_n)。对于平面中的这n个点,可以使用无数条曲线来拟合。要求样本回归函数尽可能好地拟合这组值。综合起来看,这条直线处于样本数据的中心位置最合理。选择最佳拟合曲线的标准可以确定为:使总的拟…

  • 网页显示400 bad request_1类错误拒绝无效假设

    网页显示400 bad request_1类错误拒绝无效假设在ajax请求后台数据时有时会报 HTTP400错误-请求无效(Badrequest);出现这个请求无效报错说明请求没有进入到后台服务里;原因:1)前端提交数据的字段名称或者是

发表回复

您的电子邮箱地址不会被公开。

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