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

开发普通的spring程序需要6个jar
我们去官方下载了 spring的提供的jar文件
spring ioc/aop简单全面实现 适合新手入门
点击打开里面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 导入项目并加入类路径
spring ioc/aop简单全面实现 适合新手入门
我这里实现了aop 多了4个jar 后面再讲先不用管

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

首先我们建一个student的pojo
spring ioc/aop简单全面实现 适合新手入门

然后建立dao层接口

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

spring ioc/aop简单全面实现 适合新手入门
我们再编写service层接口 和实现类

spring ioc/aop简单全面实现 适合新手入门
spring ioc/aop简单全面实现 适合新手入门
这里用到依赖注入 所以要添加set方法 当然后期可以通过注解添加就不需要了

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

spring ioc/aop简单全面实现 适合新手入门
这些约束可以直接添加完 后期也会用到 如果不知道怎么添加 可以使用提供的集成环境sts到ide 或者下载 spring版的 eclipse

加入dao 和 service到ioc容器
spring ioc/aop简单全面实现 适合新手入门
id是在ioc里面的唯一标识 class对应的是类路径

property是为属性注入值
他常用的参数有 name(属性名),value(属性值 ),ref(容器里面类的id)
当然还有他的子元素 比如
list ,map,set,propertis,array
spring ioc/aop简单全面实现 适合新手入门
依赖注入还有自动注入 autowire=“byname/bytype”
spring ioc/aop简单全面实现 适合新手入门
配置文件添加好之后我们开始创建测试类

spring ioc/aop简单全面实现 适合新手入门
我们通过 new ClassPathXmlApplicationContext(“springs.xml”);创建一个spring容器的上下文对象ApplicationContext

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

spring ioc/aop简单全面实现 适合新手入门
下面我们来通过 xml和注解的方式实现aop(面向切面)上述依赖 注入注解方式会在下面讲解

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

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

添加相应的xml约束(前面已经添加) 和4个jar包 aspectj等
spring ioc/aop简单全面实现 适合新手入门
一般流程 定义切点->定义通知->连接切点与通知
前置通知 before 对应的通知接口(MethodBeforeAdvice)
后置通知 afterreturning 对应的通知接口 (AfterReturningAdvice)
环绕通知 around 对应的接口(MethodInterceptor )
异常通知 afterthrowing 对应的接口(ThrowsAdvice)
最终通知 after

首先我们编写通知类
spring ioc/aop简单全面实现 适合新手入门
我这里实现了两个通知 一个前置一个后置 和他们对应的方法

然后我们编写 bean
spring ioc/aop简单全面实现 适合新手入门
aop:pointcut 是指定切入点 expression 对应的切入点通配符 *表示所有 我这里表示的是 com.test.service.map包下所有方法 所有返回值 所有参数的方法 都会被拦截

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

spring ioc/aop简单全面实现 适合新手入门
前置后置成功

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

spring ioc/aop简单全面实现 适合新手入门
然后我们编写配置文件
spring ioc/aop简单全面实现 适合新手入门
原理和上面差不多 只是这次是spring帮我们继承相应的接口

我们注解上次的再次运行(主要怕太混乱)
spring ioc/aop简单全面实现 适合新手入门
效果相同

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

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

我们现在配置bean
spring ioc/aop简单全面实现 适合新手入门
添加扫瞄器和对aop注解的支持

之后再运行service
spring ioc/aop简单全面实现 适合新手入门
好了基本的ioc和aop就已经实现了

这里注意 spring要对web的支持需要添加 spring-web-3.2.4.RELEASE.jar 并配置web.xml 监听器 和配置文件加载器
spring ioc/aop简单全面实现 适合新手入门
对应的jar放入lib文件夹

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

不懂可以联系我 qq:760485464

原创转载注明出处