Spring-AOP

spring 的两大核心:
 IOC :控制反转
AOP :面向切面编程 Aspect Oriented Programming
 
Java 的基本思想: OOP Object Oriented Programming 面向对象编程
AOP --> 是针对 OOP 的补充;
别人的代码最好不要动;
在别人代码的基础上,拓展功能而不改变原有代码; 添加新的代码;使用其他对象来完成新增的功能,
就是 aop 的思想
底层应用: 动态代理;
使用设计模式为:代理模式;
代理的几种方式:
1. 静态代理
缺点:每次代理只能代理一个类型的对象,如果要代理其他类型的需要创建新的代理类;
代理类和被代理类,必须实现同一个接口,才能知道有哪些方法可以调用;
2. 动态代理 : 解决代理类和被代理类之间的共同接口问题;
2.1 jdk 接口动态代理 只有代理类实现了接口,才能使用此种方式;
代理类可以代理多种类型的类,但是这几个类必须实现同一个接口;
2.2 cglib 子父类动态代理 代理类必须要有父类; 基于 asm 字节码技术
使用第三方的 jar cglib.jar
 
aop 的应用
spring-aop 种, 默认使用的是 jdk 动态代理, 只有在类没有实现接口的时候,才会使用 cglib 动态
代理;
1. 使用配置文件 xml 进行 aop 的配置
过程比较繁琐;
2. 使用注解的方式进行 aop 的配置
工作中最常用的 注解 aop 的配置
 
spring 种的注解
注解:
@ 开头 + 注解名称 @Override @Test
注解的使用方式: 放在类、属性、方法之上;
spring 中的注解: 为了代替 xml 中配置内容 ,减少配置文件中的内容
1. ioc 相关注解 5 基础包 (bean context core expression jcl) + aop.jar
1.1 bean 的声明
四个注解 @Component @Controller @Service @Repository
@Component("bean 名称 ") 如果没有指定 bean 的名称 默认对象名称:是类名首
字母小写
用法、作用一摸一样
java web 项目 三层架构
web 层 展示层表示层 使用 @Controller 进行定义生成对象 service 层 业务逻辑层 使用 @Service 进行注解
dao 层 数据持久层 使用 @Repository 进行注解
除了三层之外的其他类交由 spring 管理时,使用 @Component 进行注解
1.2 、属性的注入
@Autowired 使用位置,在属性 ( 大部分 ) setter 方法之上
@Qualifier("bean 名称 ") Autowired 不能指定为具体某一个对象时,需要使用此
注解指定对象的名称
@Resource
 
 
 
 

你可能感兴趣的:(Spring-AOP)