Spring框架
spring框架怎么定义?
它是一个轻量级的项目开源框架,是一个现成的项目架构,企业可以运用框架已有的功能进行搭建自己的项目。那么为什么要用它呢?
优点
- ioc编程(控制反转IOC和依赖注入di)方便解耦,简化开发。怎么理解?解耦就是将项目的各个部分划分的更加的清晰,减少类与类之间的耦合度,将创建类的工作交给了spring来完成(IOC)。平时我们创建了都是通过new来进行的,在spring中不需要,如果一个类需要用到另一个类,可以通过注入的方式来进行调用。
- aop编程(面向切面编程)。就是将同一类的事物的操作分离出来,在切面进行代理操作,减少代码的重复。比如老师要寄一封信,学生也要,那么老师类和学生类就没有必要都加一个寄信的操作,只需要告诉切面类,将寄信的操作交给切面就好了。
- 声明式事务的支持。
- 方便测试。
怎么去使用spring呢?
- 导包
- 创建项目需要的类
- 创建核心配置文件(applicationContext.xml)
- 在配置文件中添加bean
- 通过applicationContext去获取bean实例
bean的标签
- id:bean在容器中的唯一标识
- class:bean所表示的类,全限定名
- property:相当于类中的属性,有name,value
通过注解开发
@component:用在类上实例化bean
@respository:用在dao层类上实例化bean
@service:用在service层实例化bean
@controller:用在web层实例化bean
@Autowire:用在字段上根据类型注入
@resource:用于字段上根据名称注入
@qualifier:和@autowire配合使用按照名称注入
@value:用于字段上,注入普通属性
@configuration:指定当前类是spring配置类
@componentscan:指定spring初始化容器的时候需要扫描的类
@Bean:使用在方法上,标注返回值存储到容器中
@propertysource:加载properties配置文件
@ import:导入其他配置类
测试Junit集成
- 导包
- 使用@Runwith替换原来运行期
- 使用ContextConfiguration指定配置文件
- 使用@Autowire注入测试类
- 编写测试方法
aop详解
利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。
作用:在程序运行期间,不修改源码的情况下对功能进行增强。
底层原理:AOP 的底层是通过 Spring 提供的的动态代理技术实现的。在运行期间,Spring通过动态代理技术动态的生成代理对象,代理对象方法执行时进行增强功能的介入,在去调用目标对象的方法,从而完成功能的增强。
常用的动态代理技术
JDK 代理 : 基于接口的动态代理技术
cglib 代理:基于父类的动态代理技术
Spring 框架监控切入点方法的执行。一旦监控到切入点方法被运行,使用代理机制,动态创建目标对象的代理对象,根据通知类别,在代理对象的对应位置,将通知对应的功能织入,完成完整的代码逻辑运行。
步骤
①使用@Aspect标注切面类
②使用@通知注解标注通知方法
③在配置文件中配置aop自动代理aop:aspectj-autoproxy/
通知注解:
@before:增强方法在切入点之前
@afterreturning:切入点之后
@Around:前后都通知
@afterthrowing:异常之后
@after:整个过程结束之后