IOC与AOP的理解
转自 https://blog.csdn.net/qq_38006047/article/details/80797386
1,理解“控制反转”
控制反转,也叫依赖注入,是面向对象编程中的一种设计理念,用来降低程序代码之间的耦合度。
程序的耦合:调用者与被调用者的依赖关系。
比如:程序员A负责编写A类,程序员B负责B类开发,A类的某些功能需要是梨花B类的对象调用其方法才能完成,那么A类就依赖B类,如果程序员B不写B类 难道程序员A要一直等下去?
企业开发的原则:“编译时不依赖,运行时才依赖”
// 所谓的A类依赖B类
public class PersonServiceBean{
private PersonDao personDao=new PersonDaoBean(); public void save(Person person){
personDao.save(person);
}
}
PersonDaoBean是在应用内部创建及维护的。
所谓“控制反转”就是应用本身不负责依赖对象的创建及维护,依赖对象的创建及维护是由外部容器负责的。这样控制权就由应用转移到了外部容器,控制权的转移就是所谓的反转。
2,依赖注入
当我们把依赖对象交给外部容器负责创建,那么PersonServiceBean类就可以改成:
public class PersonServiceBean{
private PersonDao personDao;
// 通过构造参数,让容器把创建好的依赖对象注入进PersonServiceBean,当然也可以使用setter方法进行注入
public PersonServiceBean(PersonDao personDao ){
this.personDao=personDao ; }
public void save(Person person){
personDao.save(person);
}
}
所谓依赖注入是指:在运行期,由外部容器动态地将依赖对象注入到组件中。
Spring AOP
理解“面向切面编程”
比如在两个类中,可能都需要在每个方法中记录日志。按照面向对象的设计方法,我们就必须在两个日志的内容。也许他们是完全相同的,但就是因为面向对象的设计让类与类之间无法联系,而不能将这写重复的代码统一起来。
也许会有人说,那好办啊,我们可以将这段代码写在一个独立的类中独立的方法里,然后再在这两个类中调用。但是,这样一来,这两个类跟我们上面提到的独立的类就有耦合了,它的改变会影响这两个类。那么,有没有什么办法,能让我们在需要的时候,随意地加入代码呢?
这种在运行时,动态地将代码切入到类的制定方法、指定位置上的编程思想就是面向切面编程。
简单地说就是不改变原程序的基础上为代码增加新的功能,对代码进行增强处理。
常用增强处理类型:
最新文章
- angularjs 自定义服务的三种方式
- [SQL]复制数据库某一个表到另一个数据库中
- IIS 7 中设置文件上传大小的方法
- CSS书写建议参考
- C++ Primer 第5版
- [LeetCode]题解(python):036-Valid Sudoku
- Delphi XE5教程9:基本语法元素
- Meth | elementary OS常用配置
- java导入excel
- JavaScript推荐资料合集(前端必看)
- MyBatis动态代理
- 【原创】重复造轮子之高仿EntityFramework
- poj1011 && uva307 DFS + 剪枝
- form表单图片上传
- IntelliJ隐藏特定后缀文件
- jquery 学习 总结
- 源码:Java集合源码之:数组与链表(一)
- matlab中syms与sym有什么区别
- linux运行apache出现403错误
- GCD(Swift)