1.引入spring框架相关依赖
2.引入spring框架配置文件
3.通过spring管理组件
4.启动工厂,获取对象进行测试
Spring是一个工厂一个项目管理框架(主要负责项目中组件对象的创建,使用和销毁)
项目管理就是对组件进行创建,使用和销毁。
entity组件我们一般不交给spring来管理
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
</beans>
这个依赖就集合了Spring的所有依赖
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.1.10.RELEASE</version>
</dependency>
</dependencies>
接下来就是测试Spring能不能帮我们创建对象了
实现类是容器帮我们创建的对象。
接下来就是启动工厂(或者叫容器)让它帮我们创建对象
工厂一启动,一读到这个配置文件,它就会根据我们指定的类去创建组件对象。并且给工厂中创建出来的对象起了一个唯一的标识(这里指的就是id)
然后我们就可以获取工厂中创建好的对象了。
如果对象没有创建出来调用方法就会出现空指针
这两个对象的创建我们从来就没有使用过new关键字,我们都是通过参数,或者是servletActionContext.getRequest的方式直接拿到了一个实例。(你之所以拿到了这个实例一定是有人帮助我们创建了这个实例)。这个人就是tomcat容器。
控制反转是大部分容器都有的。
所以Spring又引入了DI
日后我们的业务层组件一定需要调用我们的dao组件,我们在工厂管理的情况下如何完成组件的调用呢?
如果我们要在Dept的service中去调用我们的dao,那我们需要在service里面先拿到DeptDao这个组件对象
我们需要Dao组件可以理解为我们依赖Dao组件
依赖注入(你需要谁就先把它声明为成员变量,第二步就是要为成员变量赋值(为成员变量赋值的过程我们就称为注入),)
一个property只能完成一个属性的赋值name用来指定给组件中的哪个属性名赋值。
ref找的是工厂中的对象,我们现在要的是一个字符串。这里我们是通过value属性完成赋值操作。
框架的报错我们从下往上看
properties集合是无序的
自动注入只能注入对象,所有必须有两个层,类似Dao层注入业务层的使用。
给声明了变量,设置了set方法的进行自动注入(byname(变量名和工厂的id值对应))
接口具有屏蔽底层实现的作用
classLoader是用来读取.class文件的
invoke说明的就是我们这里用到了反射
切入点就是用来确定什么时候生成动态代理对象。
aop的代码实现
切入到这个实现类里面了
spring-aop(提供了spring给我们扩展的各种各样的通知(前置通知,后置通知,环绕通知,异常通知))
事务通知就是一个典型的环绕通知
环绕通知它不属于项目的任何一层,所以我们要新建一个包叫advices专门来保存我们项目中的附加操作。
如果发送异常就进入不了后置了