基础框架SSM-----------spring篇

发布于:2024-04-02 ⋅ 阅读:(67) ⋅ 点赞:(0)

spring系统架构

46a5e3b66cc44ebdaf616c429203d8e8.png

 

 Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器(框架)!!!!!!!!

 

IOC(Inversion of Control)控制反转------解耦合


 如图使我们所熟悉的基本逻辑,在业务层中调用Dao层的对象,但是当我们Dao层进行修改的时候业务层也就需要改动,然后项目就得全部重新部署发布,导致代码的耦合度高,所以我们不在业务层创建对象,转换为外部提供01dfade4d6174577b84926f6ca6f016a.png

 

所以引入了IoC控制反转的思想并且Spring实现了该思想

9e7e93a51bdb401c95334ec220be413e.png


 ①IoC底层逻辑:把类的对象创建工作给IoC容器,然后只要获取IOC对象即可使用

第一步:导入Spring坐标

17a570484e624d3c9728ec3e997e201f.png

第二步:定义Spring管理的类

6e8b92ce34924f48843a51d95d7fab1b.png

第三步:配置对应的类使其交给IoC容器管理对象的创建

ecd991bedd5342059eee16058babcdf3.png

 第四步:获取容器对象,然后就可以使用getBean()方法注入bean对象并使用

d52c15221f5543e1bc44ab13732fdf23.png

 

②bean是如何创建出来的

第一种方法:调用无参的构造方法创建出来的

第二种方法:使用静态工厂实例化bean

第三种方法:使用实例工厂实例化bean

 

③bean的作用域

(1)singleton--单例模式,使用 singleton 定义的 Bean 在 Spring 容器中只有一个实例,这也是 Bean 默认的作用域。

(2)prototype--原型模式,每次通过 Spring 容器获取 prototype 定义的 Bean 时,容器都将创建一个新的 Bean 实例。

(3)request:在一次 HTTP 请求中,容器会返回该 Bean 的同一个实例。而对不同的 HTTP 请求,会返回不同的实例,该作用域仅在当前 HTTP Request 内有效。

(4)session:在一次 HTTP Session 中,容器会返回该 Bean 的同一个实例。而对不同的 HTTP 请求,会返回不同的实例,该作用域仅在当前 HTTP Session 内有效。

(5)global Session:在一个全局的 HTTP Session 中,容器会返回该 Bean 的同一个实例。该作用域仅在使用 portlet context 时有效。

74f52b473d1b4e37916f294ef1980734.png

 

④bean的生命周期-------从创建到销毁

8685357677774ac3970ed0426ec3f6f6.png

 

⑤依赖注入

setter注入

setter注入引用类型

862d4b489bb8455aa72e1fcb62831990.jpg

 setter注入简单类型

a89ddf18806a4bbca3cee39d725efbcb.jpg

构造器注入

构造器注入引用类型

305fcdda30dc4138a42d49dbfa5b9c33.jpg

 构造器注入简单类型

24bc031ae9464fb2ae1929cd43978e30.jpg

 至于依赖的自动装配和集合(List,array,map...)的注入这里就不做讲解

 

⑥数据源对象管理-----Druid

df8df2ecfe034947816d47a2edb54c5e.jpg

 

⑦容器

创建容器:

b99cf42c39844df38c50fa4f0b07f02d.jpg

 获取bean:

bc1d921661a247e2967eeb4bd7dd8073.jpg

 接口结构:d72476de74544b82b6e8aa7af87f8ffd.jpg

至此以上都是对Spring配置的原理过程的学习,而在实际开发中都不是使用上面的开发模式,而是接下来的注解开发(很重要!!)

 

注解开发(要求熟练掌握)

①使用注解定义bean@component(也可以分为@Controller   @Service   @Repositary)

e517d080b8224a829ab799c08744d610.jpg

 ②配置文件用注解类替代@Configuration

5321dc89be984b428f722d68417c62ff.jpg

③使用注解依赖注入@Autowired

35aa04e101b64dfd9a6f0186313be9cc.jpg

 

④第三方的Bean

e05df4278c774cba91692a99bb3e2f4b.png

 

两种方式的对比 

4e02f5081e7e440489efe097ac4f8598.png

 

AOP(Aspect Oriented Programming)面向切面编程------无侵入的功能增强

 核心概念:代理模式

fa2d9cc169e849a082fc1e91b30dc2b2.png

 AOP的工作流程:349d6fb45ff548738ad3f46f3b426056.png

9a1979eb3a754e39b9308ce7eced7b3a.png

AOP的通知类型(主要掌握环绕通知):

84a48df6fb434325ab423f9123e81163.jpg

 这里分别是无返回和有返回值的写法:①都需要return 一个对象或者把原方法的return值再给他写回去②ProceedingJoinPoint对象是调用原始方法点即切入点7e31682639e4481da82a9aab0974b828.jpg

 AOP获取参数:

 

本文含有隐藏内容,请 开通VIP 后查看