Spring的IOC的注解开发
一.IOC注解开发入门
- 创建web项目,引入jar包
- - 在Spring4的版本中, 除了引入基本的开发包外,还需要引入aop的包 - 引入Spring的配置文件
- 在src下创建applicationContext.xml
- - 引入约束 : 使用注解开发引入context约束
- 在src下创建applicationContext.xml
- 创建接口和实现类
- 开启Spring的组件扫描
- 在类上添加注解
- 编写测试类
- 注解方式设置属性的值 : 使用注解方式,可以没有set方法
- - 属性如果有set方法,需要将属性注入的注解添加到set方法上
- - 属性如果没有set方法,需要将属性注入的注解添加到属性上
二.IOC的注解的详解
- @Component : 组件
- 修饰一个类,将这个类交给Spring管理
- 这个注解有三个衍生注解(功能类似) 修饰类
- - @Controller : web层
- - @Service : service层
- - @Repository : dao层
- 属性注入的注解
- 普通属性: @Value : 设置普通属性的值
- 对象类型属性:
@Autowired : 设置对象类型的属性的值, 但是按照类型完成属性注入
- - 我们习惯是按照名称完成属性注入: 必须让@Autowired注解和@Qualifier一起使用完成按照名称属性注入
@Resource : 完成对象类型的属性注入, 按照名称属性完成注入
- Bean的其他的注解
- 生命周期相关的注解
- - @PostConstruct : 初始化方法
- - @PreDestroy : 销毁方法 - Bean作用范围的注解
- - @Scope : 作用范围
- 生命周期相关的注解
三.IOC的XML和注解开发比较
- 适用场景:
XML: 可以使用任何场景 结构清晰,维护方便
注解: 有些地方用不了, 这个类不是自己提供的 开发方便 - XML和注解整合开发
- -XML管理Bean, 注解完成属性注入
不开启一.4中的组件扫描,只需要开启属性注入的注解配置
Spring的AOP的XML开发
一.AOP的概述
- AOP (Aspect Oriented Programming) : 面向切面编程,AOP是OOP的扩展和延伸,解决OOP开发遇到的问题
- Spring底层的AOP实现原理:动态代理
- - JDK动态代理 : 只能对实现了接口的类产生代理
- - Cglib动态代理 (类似于Javassist第三方代理技术) : 对没有实现接口的类产生代理对象,生成子类对象
二.Spring的AOP底层实现
- JDK动态代理
- Cglib动态代理
三.Spring的AOP的开发(AspectJ的XML的方式)
- 创建web项目,引入jar包
- 引入基本开发包
- 引入aop开发的相关jar包 - 引入Spring的配置文件
- 引入aop的约束 - 编写目标类,并完成配置
- 编写测试类
- Spring整合Junit单元测试 - 编写一个切面类, 并配置交给Spring管理
- 通过AOP的配置完成对目标类产生代理
四.Spring中通知类型
- 前置通知 before
- 后置通知 after-returning
- 环绕通知 around
- 异常抛出通知 after-throwing
- 最终通知 after
- 引介通知
五.Spring的切入点表达式写法
- 基于execution的函数完成的
- 语法
- [访问修饰符] 方法返回值 包名.类名.方法名(参数)
- public void com.mine.spring.CustomerDao.save(..)
- * *.*.*.*Dao.save(..) //代表所有Dao中的save方法都可以被增强
- * com.mine.spring.CustomerDao+.save(..) //+表示该类及其子类
- * com.mine.spring..*.*(..) //spring下的所有类,所有方法