您的位置:首页 > 编程语言 > Java开发

框架学习—Spring的IOC容器之注解方式与AOP技术

2017-11-09 23:42 453 查看

1.Spring框架的IoC基于注解的方式

1.1 IoC注解方式的入门案例

1.1.1 步骤一:导入注解开发所需Jar包
引入IoC容器必须的4个Jar包;
引入Spring框架的2个日志Jar包;
引入Spring框架的AOP的jar包:spring-aop-4.2.4.RELEASE.jar;




1.1.2 步骤二:编写用于测试的类
UserService:接口
UserServiceImpl:实现类(实现内容随意)




1.1.3 步骤三:Spring配置文件中引入注解的约束:context




1.1.4 步骤四:在Spring配置文件中开启组件扫描
<context:component-scan base-package=" " />
示例:




1.1.5 步骤五:在实现类加上注解




1.1.6 步骤六:编写测试代码




1.2 Bean管理的常用注解

1.2.1 @Component:组件(作用于类上),将被修饰的类归入Spring容器的管理。

1.2.2 @Component的衍生注解(目前功能一样):
@Controller:作用于控制层
@Service:作用于业务层
@Repository:作用于持久层

1.2.3 属性注入的注解(使用注解注入属性不用提供setter)
对于普通类型的属性,使用@Value;
对于自定义对象的属性,使用@Autowired(默认按类型自动装配),搭配@Qualifier(强制使用组件名称注入);

@Resource
由Java提供的注解,使用name属性,相当于@Autowired和Qualifier的搭配。

示例:




1.3 Bean的作用范围和生命周期的注解

1.3.1 Bean的作用范围注解
@Scope
作用在类上;
取值:
singleton:单例,默认值。
prototype:多例。
1.3.2 Bean的生命周期的配置
@PostConstruct:相当于init-method。
@PreDestroy:相当于destroy-method。


2.Spring框架整合JUnit单元测试

2.1 步骤一:配置JUnit的环境



2.2 步骤二:在测试类上添加注解



3.AOP技术

3.1 AOP的概述

3.1.1 什么是AOP技术
* Aspect Oriented Programming,面向切面编程。
* AOP是一种编程范式,指导开发者如何组织程序结构。
* AOP最早由AOP联盟组织提出,制定了一套规范,Spring引入了AOP思想,遵守了AOP联盟的规范。
* 通过预编译方式和运行期【动态代理】实现程序功能统一维护的一种技术。
* AOP是OOP的延续,是函数时编程的一种衍生泛型。
* 利用AOP可以对业务逻辑的各个部分进行隔离,降低耦合度。
* AOP采取横向抽取机制,


3.2 AOP的底层实现

3.2.1 基于JDK的动态代理
面向接口,只有实现了某个接口的类才能生成代理对象。

3.2.2 基于CGLIB的动态代理
不需要实现接口,产生这个类的子类作为代理对象。


3.3 动态代理的代码实现

3.3.1 JDK的动态代理(使用Proxy类)




3.3.2 CGLIB动态代理




4.基于AspectJ的AOP的开发

4.1 AOP的相关术语

4.1.1 Joinpoint:连接点,指被拦截到的点。在Spring中,这些点指的是方法,Spring只支持方法类型的连接点。
4.1.2 Pointcut:切入点,指对哪些Jointpoint进行拦截的定义。
4.1.3 Advice:通知/增强,拦截到Joinpoint之后要做的事情就是通知,通知分为前置通知、后置通知、最终通知、异常通知、环绕通知。
4.1.4 Introduction:引介,是一种特殊的通知,在不修改类代码的前提下,Introduction可以在运行期为类动态地添加一些方法或field。
4.1.5 Target:目标对象,代理的目标对象。
4.1.6 Weaving:织入,是指把增强应用到目标对象来创建新的代理对象的过程。
4.1.7 Proxy:代理,一个类被AOP织入增强后,就产生一个结果代理类。
4.1.8 Aspect:切面,是切入点和通知的结合。


4.2 AspectJ的XML方式完成AOP开发案例

4.2.1 步骤一:创建JavaWeb项目,引入Jar包
先引入Spring框架开发的6个(4+2)基本Jar包(请看1.1.1);
再引入Spring框架的2个传统AOP开发Jar包;
最后引入Spring框架的2个aspectJ的开发Jar包。




4.2.2 步骤二:创建Spring配置文件,引入具体的AOP的schema约束




4.2.3 步骤三:创建包结构,编写接口与实现类

4.2.4 步骤四:将目标类归入Spring的IoC容器管理

4.2.5 步骤五:定义切面类




4.2.6 步骤六:将切面类归入Spring的IoC容器管理




4.2.7 步骤七:在配置文件中AOP的配置




4.2.8 步骤八:测试代码




4.3 切入点表达式



示例:



4.4 AOP的通知类型

4.4.1 前置通知
* 在目标类的方法执行之前执行。
* 配置文件信息:<aop:after method="" pointcut=""/>
* 应用:可以对方法的参数来做校验
4.4.2 最终通知
* 在目标类的方法执行之后执行,如果程序出现了异常,最终通知也会执行。
* 在配置文件中编写具体的配置:<aop:after method="" pointcut=""/>
* 应用:例如像释放资源
4.4.3 后置通知
* 方法正常执行后的通知。
* 在配置文件中编写具体的配置:<aop:after-returning method="" pointcut=""/>
* 应用:可以修改方法的返回值
4.4.4 异常抛出通知
* 在抛出异常后通知
* 在配置文件中编写具体的配置:<aop:after-throwing method="" pointcut =""/>
* 应用:包装异常的信息
4.4.5 环绕通知
* 方法的执行前后执行。
* 在配置文件中编写具体的配置:<aop:around method="" pointcut =" "/>
* 要注意:目标的方法默认不执行,需要使用ProceedingJoinPoint对来让目标对象的方法执行。


示例:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息