【笛子的Spring5学习】知识回顾与疑问解答

1 知识回顾

1.1 Spring5 系统架构

具体介绍
在这里插入图片描述
(1)核心容器Core Container
① 由 spring-beans、spring-core、spring-context 和 spring-expression(Spring Expression Language, SpEL) 4 个模块组成。
② 包含了控制反转(IOC),依赖注入(DI),Bean 生命周期
控制、框架事件体系等功能
(2)AOP和设备支持
① 由 spring-aop、spring-aspects 和 spring-instrument 3 个模块组成
② spring-aspects 模块集成自 AspectJ 框架,主要是为 Spring AOP 提供多种 AOP 实现方法。
③ spring-instrument 模块是基于 JAVA SE 中的”java.lang.instrument”进行设计的,应该算是
AOP 的一个支援模块,主要作用是在 JVM 启用时,生成一个代理类,程序员通过代理类在运行时修改类
的字节,从而改变一个类的功能,实现 AOP 的功能
(3)数据访问及集成
① 由spring-jdbc、spring-tx、spring-orm、spring-jms 和 spring-oxm 5 个模块组成。
② spring-jdbc 模块是 Spring 提供的 JDBC 抽象框架的主要实现模块,用于简化 Spring JDBC。主
要是提供 JDBC 模板方式、关系数据库对象化方式
③ spring-tx 模块是 Spring JDBC 事务控制实现模块。
④ spring-orm 模块是 ORM 框架支持模块,主要集成 Hibernate, Java Persistence API (JPA) 和Java Data Objects (JDO) 用于资源管理、数据访问对象(DAO)的实现和事务策略
(4)Web
① 由 spring-web、spring-webmvc、spring-websocket 和 spring-webflux 4 个模块组成.
② spring-web 模块为 Spring 提供了最基础 Web 支持,主要建立于核心容器之上,通过 Servlet 或
者 Listeners 来初始化 IOC 容器,也包含一些与 Web 相关的支持。
② spring-webmvc 模 块 众 所 周 知 是 一 个 的 Web-Servlet 模 块 , 实 现 了 Spring MVC
(model-view-Controller)的 Web 应用。
(5)报文发送:即spring-messaging模块
(6)Test:即spring-test模块

1.2 IOC容器

1、Bean管理中的环节与常规调用方式间的对应关系
Bean管理 包括 对象创建和属性注入两部分

IOC容器是通过控制反转促进低耦合,将一个对象依赖的其他对象以被动方式传递进来,而不是这个对象自己创建,那两个过程功能上是有相互对应的地方。
但其实是不同的过程,比如@Autowired自动注入 和 new,前者类似于setter方法(属性注入),是把已经实例化的对象赋值到新设置的变量上(同时说明实例化在之前已经完成了),而new是新实例化的过程。

这个表只是功能上相近的比对

常规引用对象方式步骤xml配置Bean管理对应环节注解Bean管理对应环节
import导入依赖在 bean 属性中输入的class是类的完整路径信息,相当于导入开启注解扫描时指定的扫描范围
通过new创建对象使用< bean> 标签创建对象@Component等
new中调用有参构造方法< bean> 中使用< property>设置属性(会调用属性的set方法)@Autowired属性自动注入

1.3 AOP

xml配置方式忘就忘了吧,繁琐也不常用,这里只回顾注解的方式

前置是需要开启注解扫描及开启Aspect生成代理对象

然后增强的方式其实很简单,创建一个增强类并编写增强方法。在增强方法上面添加注解决定增强的切入点
比如@Around(value = “execution(* com.atguigu.spring5.aopanno.User.add(…)”)

1.4 JdbcTemplate

用来方便对数据库进行操作,但是后续开发中常用MyBatis,这个了解即可

使用方法其实就三步:
1、配置数据库连接池的信息,可以在xml文件中配置,也可以使用properties文件
2、像创建其他对象一样,在配置中创建JdbcTemplate对象,并对dataSource属性进行注入(即1中的连接池信息)
3、在需要的地方使用@Autowired注入JdbcTemplate对象。调用其中的方法完成增删改查

1.5 事务

使用方法和JdbcTemplate类似,也是三步:
1、配置数据库连接池的信息,可以在xml文件中配置,也可以使用properties文件
2、像创建其他对象一样,在配置中创建事务管理器对象,并对dataSource属性进行注入(即1中的连接池信息)并开启事务注解
3、在需要的类和方法上面添加@Transactional注解

事务参数有一些需要注意的
1、事务隔离级别 ioslation
2、事务传播行为 propagation

1.6 完全注解开发

企业开发中使用的完全注解开发还得靠springboot来实现,spring也能完成,不过相较繁琐

IOC容器、AOP、JdbcTemplate、事务其实都提供了相关的注解使用方法,但前期需要一些通用的配置还要在xml文件中实现,这些配置可以通过配置类替代

1、建立数据库连接池的bean对象 ,可使用@Bean注解
在这里插入图片描述
2、为JdbcTemplate和事务管理器注入数据库连接池,也可以使用@Bean注解
在这里插入图片描述
3、开启注解扫描、开启通知、开始事务则可以在配置上直接通过添加指定注解实现
在这里插入图片描述

2 疑问&解答

1、动态代理类在执行过程中是怎么影响正常类的?
动态代理类并不会影响原本的正常类,实现功能增强的方式是在原有正常类的基础上添加新的功能,只不过是通过动态代理的方式而不是通过硬编码的方式。

2、bean管理使用的xml文件中的命名空间是什么东西?
XML 命名空间
有时候需要在默认的命名空间中添加新的属性,比如
xmlns:context="…/context" 是因为下面的配置元素中要用到< context> 元素,加上命名空间防止后续出现标签命名重复的冲突

3、为什么调用的时候非要装载配置文件?
也不是非要有配置文件,这个问题等学习玩springboot后可以再来考虑

4、假如不注入属性会有什么影响吗?
这个属性注入的过程可以理解为给构造器中的参数赋值的过程,不注入就相当于没有调用对应属性的set方式,该属性保持初始默认值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值