Spring详解(0控制回转和依赖灌注AOP介绍)版权声明
原创目录
依赖注入
控制反转和依赖注入
Spring依赖注入
AOP 面向操作的编程
Spring 框架本身的四个原则
1) 使用pojo轻量化和微创开发
2) 通过依赖注入和基于接口的编程实现交付耦合。
3) 通过AOP以及声明性编程的默认习惯
4) 使用AOP和模板(template) 减少模式化代码
依赖注入
依赖注入是负责创建对象和维护对象之间依赖关系的容器。,而不是通过对象本身负责自己的构建和解决自己的依赖关系
依赖注入的目的是解耦,解释将实例变量传递到另一个对象
什么是依赖关系?是一个类Father 有一个班级在Son一个实例,则称 Father 对Son 有依赖关系
public class Father{
...
Son son;
public Father (){
Son =new Son();
}
...
}
这有几个问题:
1) 一旦Son施工方式变更,需要修改Father中的new Son() 代码的一部分
2) 想要测试不同的Son对象对Father更困难的影响,因为Son的初始化部分已写入Father在施工方法中
3) 如果new Son() 需要很长时间,测试时更麻烦。
因此,可以进行以下修改。
public class Father{
...
Son son;
public Father ( Son son){
this.son=son;
}
...
}
修改后的代码,在构造Fatherdui对象之前,已经有一个已初始化。Son对象,
就像这不是他们自己主动初始化依赖关系一样,而是外部传入依赖项的方式,是依赖注入
控制反转
控制反转是面向对象编程中的一个设计原则。,用于查看底部代码之间的耦合。,其基本思想是: 借助
具有依赖关系的对象之间的第三方实现解耦
假设有四个对象,A,B,C,D ,他们需要相互依赖才能正常工作,对象有问题,整个系统停止。,它叫
相互耦合 :
原系统
控制反转后的系统(解耦)
现在让我们比较控制反转前后的系统。
对象A依赖C,如果A需要在运行中使用。C的时候,必须主动创造C或使用已创建的C对象,但不管它是不是被创造出来的,还是使用,主动权在A自己手中
但是引入IOC容器之后,A与C无直接接触,如果A使用到C的时候,IOC将主动创建对象C,然后注射A需要的地方, 对象A获取从属对象C的过程,成为被动获取,这是控制的倒置。
spring中的控制反转是通过依赖注入实现的
控制反转和依赖注入
控制反转是一种想法,依赖注入是一种模式
Spring依赖注入
Spring的IOC容器 是(ApplicationContext),复制创建bean,并通过容器传递函数类。Bean注入所需的bean中
Spring 提供的注射方法有: xml,注解,java配置
使用注释的优点是减少代码的编写。,更快的开发
bean常见注意事项
@Component
@Service 业务逻辑层(service,通常放在实现类中)
@Repository 数据访问层使用(dao)
@Controller 表示层使用(例如sprispringMVC中)
注入bean常见注意事项
@Autowired : spring提供的意见
@Resource
spring4.* 推荐使用java配置
java配置已完成@Configuration和@Bean来实现的
@Configuration 将类声明为配置类,相当于1springpeiz配置的xml文件
@Bean 方法的注释,声明当前方法返回Bean
AOP 面向操作的编程
spring 的AOP存在的目的是脱钩,AOP可以让一组类共享相同的行为
例如 oop中,将功能封装到对象中,但有时会有重复的代码,假设对象A,Btong还需要对日志进行操作,封装之后,出现重复代码,此时,可以将相同的日志操作提取到实用程序类中C中,让两个对象调用,但是对象A和B就与gong工具类C耦合了
AOP的作用是,在需要的时候,随意添加代码
有两种常见的方法: 静态与动态代理
静态代理使用AsprctJ ,其操作模式为,编译期间生成AOP的代理类,它也被称为编译增强。
通过动态代理springAop在内存中为方法临时生成AOP对象,此对象包括目标对象的所有方法,在相应的切点进行增强操作
SpringAop两种动态代理方式 JDK动态代理也是cglib
JDK基于反射机制的动态代理,要求代理类必须实现接口
cglib基于继承,因此,如果定义了类final,无法使用cglib执行动态代理
作者:Hero_孙
来源:CSDN
原文:https://blog.csdn.net/aa15237104245/article/details/81169392
版权声明:本文为博主原创文章,转载请附上博客链接!
版权声明
所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除
itfan123




