spring框架-概述(spring特性、生命周期)(一)

简介: spring框架-概述(spring特性、生命周期)(一)

什么是spring

Spring框架是一个开放源代码的J2EE应用程序框架,由Rod Johnson发起,是针对bean的生命周期进行管理的轻量级容器 ,是为了解决企业级编程开发中的复杂性,实现敏捷开发的应用型框架

spring重要特性

IOC:

(Inverse of Control ):一种思想 (容器帮我们创建对象并且管理和控制 )

反转后不再由自己本身的对象进行控制这个内置对象的创建,而是由第三方系统去控制这个内置对象的创建。简单来说就是把本来在类内部控制的对象,反转到类外部进行创建后注入,不在由类本身镜像控制,这就是IOC的本质

DI(Dependency Injection): 一种行为:意思是自身对象中的内置对象是通过注入的方式进行创建

实现DI:依赖注入可以通过setter方法注入(设值注入)、构造器注入和接口注入三种方式来实现,Spring支持setter注入和构造器注入,通常使用构造器注入来注入必须的依赖关系,对于可选的依赖关系,则setter注入式更好的选择,setter注入需要类提供无参构造器或者无参的静态工厂方法来创建对象

ioc与aop的关系:ioc就是一种思想,可以理解为容器,di就是注入这一行为,那么di确实就是ioc的具体功能的实现。而ioc则是di发挥的平台和空间。所以说。ioc和di即是相辅相成的拍档。他们都是为了实现解耦而服务的

AOP:面向切面编程 ,与业务逻辑无关的代码 日志、权限控制、事务管理 业务扩展,通过消息前置、后置跟业务无关的代码完成具体的功能

底层通过动态代理的方式进行实现,分为JDK代理与CGlib代理

动态代理是在你原有的功能基础之上,对功能进行增强的一种实现手段。通过动态代理,并且符合开闭原则的前提增强方法的功能。这也是AOP的思想,通过不修改原有代码,把你的代码织入到指定的方法中。

两种代理方式JDK代理与CGLib代理:

JDK代理的接口,而CGLib代理的类

spring生命周期

准备工作

先获取对象的信息(主要通过xml文件或注解的方式),放入BeanDefiniton(存储的为Bean的属性、是否单例、名称、构造方法等信息)

1.实例化

将放入BeanDefiniton中的信息通过反射的形式进行创建对象(相当于在内存中开辟地址)存入map集合

2.初始化

将实例化后的对象进行属性赋值

自定义属性赋值:populateBean()

容器对象属性赋值:invokeAwareMethods()

在初始化的过程中有增强器的内容,:(目的是对对象进行扩展):使用BeanProcessor 进行扩展

前置处理方法与后置处理方法

前置处理器:BeanFactoryPostProcessor

在Bean对象实例化前,Spring会调用BeanFactoryPostProcessor接口的postProcessBeanFactory。

作用:

在这个阶段,spring刚刚完成了所有配置类的解析,完整的将所有的配置类转换成了对应的BeanDefinition。但是尚且没有完成Bean的实例化。在这个阶段,程序员可以对这些BeanDefiniton进行二次修改。

后置处理器

实现AOP

3.使用

通过getBean方法进行获取

4.销毁

1.判断是否实现了DispoableBean接口

2.调用destroyMethod方法

知识扩展

BeanFacotroy与FactoryBean的区别?

BeanFactory是spring的容器中的Bean工厂,Bean的创建,获取都是它来完成的,也就是说BeanFactory就是spring的容器,里面放入了所有的Bean,包括单例Bean,原型的Bean定义,也就是BeanDefinition,而BeanFactory中可以放入不同类型的Bean,(流水线)

而FactoryBean也是一种Bean,FactoryBean是BeanFactory的一种Bean,是一种特殊的Bean,FactoryBean中是只能放入一种类型的Bean。(私人定制)


相关文章
|
1月前
|
数据采集 监控 前端开发
二级公立医院绩效考核系统源码,B/S架构,前后端分别基于Spring Boot和Avue框架
医院绩效管理系统通过与HIS系统的无缝对接,实现数据网络化采集、评价结果透明化管理及奖金分配自动化生成。系统涵盖科室和个人绩效考核、医疗质量考核、数据采集、绩效工资核算、收支核算、工作量统计、单项奖惩等功能,提升绩效评估的全面性、准确性和公正性。技术栈采用B/S架构,前后端分别基于Spring Boot和Avue框架。
|
2月前
|
Java API 数据库
Spring Boot框架因其简洁的配置、快速的启动特性及丰富的功能集而备受开发者青睐
本文通过在线图书管理系统案例,详细介绍如何使用Spring Boot构建RESTful API。从项目基础环境搭建、实体类与数据访问层定义,到业务逻辑实现和控制器编写,逐步展示了Spring Boot的简洁配置和强大功能。最后,通过Postman测试API,并介绍了如何添加安全性和异常处理,确保API的稳定性和安全性。
38 0
|
2月前
|
前端开发 Java 数据库连接
Spring 框架:Java 开发者的春天
Spring 框架是一个功能强大的开源框架,主要用于简化 Java 企业级应用的开发,由被称为“Spring 之父”的 Rod Johnson 于 2002 年提出并创立,并由Pivotal团队维护。
58 1
Spring 框架:Java 开发者的春天
|
29天前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个前后端分离的应用框架,实现动态路由和菜单功能
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个前后端分离的应用框架,实现动态路由和菜单功能。首先,确保开发环境已安装必要的工具,然后创建并配置 Spring Boot 项目,包括添加依赖和配置 Spring Security。接着,创建后端 API 和前端项目,配置动态路由和菜单。最后,运行项目并分享实践心得,帮助开发者提高开发效率和应用的可维护性。
53 2
|
28天前
|
消息中间件 NoSQL Java
springboot整合常用中间件框架案例
该项目是Spring Boot集成整合案例,涵盖多种中间件的使用示例,每个案例项目使用最小依赖,便于直接应用到自己的项目中。包括MyBatis、Redis、MongoDB、MQ、ES等的整合示例。
84 1
|
2月前
|
人工智能 开发框架 Java
总计 30 万奖金,Spring AI Alibaba 应用框架挑战赛开赛
Spring AI Alibaba 应用框架挑战赛邀请广大开发者参与开源项目的共建,助力项目快速发展,掌握 AI 应用开发模式。大赛分为《支持 Spring AI Alibaba 应用可视化调试与追踪本地工具》和《基于 Flow 的 AI 编排机制设计与实现》两个赛道,总计 30 万奖金。
|
2月前
|
Java 数据库连接 开发者
Spring 框架:Java 开发者的春天
【10月更文挑战第27天】Spring 框架由 Rod Johnson 在 2002 年创建,旨在解决 Java 企业级开发中的复杂性问题。它通过控制反转(IOC)和面向切面的编程(AOP)等核心机制,提供了轻量级的容器和丰富的功能,支持 Web 开发、数据访问等领域,显著提高了开发效率和应用的可维护性。Spring 拥有强大的社区支持和丰富的生态系统,是 Java 开发不可或缺的工具。
|
3月前
|
SQL 监控 druid
springboot-druid数据源的配置方式及配置后台监控-自定义和导入stater(推荐-简单方便使用)两种方式配置druid数据源
这篇文章介绍了如何在Spring Boot项目中配置和监控Druid数据源,包括自定义配置和使用Spring Boot Starter两种方法。
|
2月前
|
人工智能 自然语言处理 前端开发
SpringBoot + 通义千问 + 自定义React组件:支持EventStream数据解析的技术实践
【10月更文挑战第7天】在现代Web开发中,集成多种技术栈以实现复杂的功能需求已成为常态。本文将详细介绍如何使用SpringBoot作为后端框架,结合阿里巴巴的通义千问(一个强大的自然语言处理服务),并通过自定义React组件来支持服务器发送事件(SSE, Server-Sent Events)的EventStream数据解析。这一组合不仅能够实现高效的实时通信,还能利用AI技术提升用户体验。
187 2
|
21天前
|
缓存 IDE Java
SpringBoot入门(7)- 配置热部署devtools工具
SpringBoot入门(7)- 配置热部署devtools工具
33 2
 SpringBoot入门(7)- 配置热部署devtools工具