spring ioc/aop简单全面实现 适合新手入门

开发普通的spring程序需要6个jar
我们去官方下载了 spring的提供的jar文件
解压后
点击打开里面libs目录
找以下jar
spring-aop-3.2.4.RELEASE.jar
spring-beans-3.2.4.RELEASE.jar
spring-context-3.2.4.RELEASE.jar
spring-core-3.2.4.RELEASE.jar
spring-expression-3.2.4.RELEASE.jar
还需要一个日志包 spring框架底层使用了他 不然ioc不能实例化
commons-logging-1.1.1.jar

我们把相应的jar 导入项目并加入类路径
在这里插入图片描述
我这里实现了aop 多了4个jar 后面再讲先不用管

项目要求 通过指定id查询学生

首先我们建一个student的pojo
学生id,name,age

然后建立dao层接口

在这里插入图片描述
dao层实现类

我这里没有用到数据库 所以模拟了查询
我们再编写service层接口 和实现类

接口
在这里插入图片描述
这里用到依赖注入 所以要添加set方法 当然后期可以通过注解添加就不需要了

现在我们开始编写spring 配置文件

在这里插入图片描述
这些约束可以直接添加完 后期也会用到 如果不知道怎么添加 可以使用提供的集成环境sts到ide 或者下载 spring版的 eclipse

加入dao 和 service到ioc容器
在这里插入图片描述
id是在ioc里面的唯一标识 class对应的是类路径

property是为属性注入值
他常用的参数有 name(属性名),value(属性值 ),ref(容器里面类的id)
当然还有他的子元素 比如
list ,map,set,propertis,array
在这里插入图片描述
依赖注入还有自动注入 autowire=“byname/bytype”
在这里插入图片描述
配置文件添加好之后我们开始创建测试类

在这里插入图片描述
我们通过 new ClassPathXmlApplicationContext(“springs.xml”);创建一个spring容器的上下文对象ApplicationContext

然后通过上下文对象的getBean方法获取 service类
最后调用service方法查询学号为20的学生

在这里插入图片描述
下面我们来通过 xml和注解的方式实现aop(面向切面)上述依赖 注入注解方式会在下面讲解

第一种实现我们使用 接口加xml方式实现

(1)Aspect(切面):通常是一个类,里面可以定义切入点和通知;
(2)JointPoint(连接点):程序执行过程中明确的点,一般是方法的调用;
(3)Advice(通知):AOP在特定的切入点上执行的增强处理,可以是前置处理、后置处理、异常处理等;
(4)Pointcut(切入点):就是带有通知的连接点,在程序中主要体现为书写切入点表达式;
(5)AOP代理:AOP框架创建的对象,代理就是目标对象的加强

添加相应的xml约束(前面已经添加) 和4个jar包 aspectj等
在这里插入图片描述
一般流程 定义切点->定义通知->连接切点与通知
前置通知 before 对应的通知接口(MethodBeforeAdvice)
后置通知 afterreturning 对应的通知接口 (AfterReturningAdvice)
环绕通知 around 对应的接口(MethodInterceptor )
异常通知 afterthrowing 对应的接口(ThrowsAdvice)
最终通知 after

首先我们编写通知类
在这里插入图片描述
我这里实现了两个通知 一个前置一个后置 和他们对应的方法

然后我们编写 bean
在这里插入图片描述
aop:pointcut 是指定切入点 expression 对应的切入点通配符 *表示所有 我这里表示的是 com.test.service.map包下所有方法 所有返回值 所有参数的方法 都会被拦截

advisor可以理解为连接线的意识 把通知和切入点连接
我们现在再来执行一下 service方法

在这里插入图片描述
前置后置成功

我们现在再来实现通过xml方式直接实现的通知
先编写一个通知类 无需实现任何接口

在这里插入图片描述
然后我们编写配置文件
在这里插入图片描述
原理和上面差不多 只是这次是spring帮我们继承相应的接口

我们注解上次的再次运行(主要怕太混乱)
在这里插入图片描述
效果相同

下面介绍通过注解实现aop和依赖注入 声明式事物就不配置了
创建通知类

在这里插入图片描述
@component 是加载类到ioc容器中去 这个功能还有@Controller @[email protected]
@aspect表示这个类是一个通知类
@pointcut 表示建立一个统一的切入点 也可以单独在通知注解里面添加
第一个参数都为joinpoint 后置通知,异常通知,环绕通知有对应的第二个参数需要指定参数名
注解就是对应的通知

我们现在配置bean
在这里插入图片描述
添加扫瞄器和对aop注解的支持

之后再运行service
在这里插入图片描述
好了基本的ioc和aop就已经实现了

这里注意 spring要对web的支持需要添加 spring-web-3.2.4.RELEASE.jar 并配置web.xml 监听器 和配置文件加载器
在这里插入图片描述
对应的jar放入lib文件夹

下期mybatis/springmvc使用和spring的合并

不懂可以联系我 qq:760485464

原创转载注明出处