转自 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

理解“面向切面编程”

比如在两个类中,可能都需要在每个方法中记录日志。按照面向对象的设计方法,我们就必须在两个日志的内容。也许他们是完全相同的,但就是因为面向对象的设计让类与类之间无法联系,而不能将这写重复的代码统一起来。

  也许会有人说,那好办啊,我们可以将这段代码写在一个独立的类中独立的方法里,然后再在这两个类中调用。但是,这样一来,这两个类跟我们上面提到的独立的类就有耦合了,它的改变会影响这两个类。那么,有没有什么办法,能让我们在需要的时候,随意地加入代码呢?

这种在运行时,动态地将代码切入到类的制定方法、指定位置上的编程思想就是面向切面编程。

简单地说就是不改变原程序的基础上为代码增加新的功能,对代码进行增强处理。

常用增强处理类型:

最新文章

  1. angularjs 自定义服务的三种方式
  2. [SQL]复制数据库某一个表到另一个数据库中
  3. IIS 7 中设置文件上传大小的方法
  4. CSS书写建议参考
  5. C++ Primer 第5版
  6. [LeetCode]题解(python):036-Valid Sudoku
  7. Delphi XE5教程9:基本语法元素
  8. Meth | elementary OS常用配置
  9. java导入excel
  10. JavaScript推荐资料合集(前端必看)
  11. MyBatis动态代理
  12. 【原创】重复造轮子之高仿EntityFramework
  13. poj1011 && uva307 DFS + 剪枝
  14. form表单图片上传
  15. IntelliJ隐藏特定后缀文件
  16. jquery 学习 总结
  17. 源码:Java集合源码之:数组与链表(一)
  18. matlab中syms与sym有什么区别
  19. linux运行apache出现403错误
  20. GCD(Swift)

热门文章

  1. 036-PHP闭包函数的域限制,与如何向闭包函数传递变量
  2. 一个swift版简单的用户名和密码输入textField
  3. Bulma CSS - 模块化
  4. MongoDB七-运维技术
  5. 第七篇 Django-认证系统
  6. mysql 带换行符的字符串数据插入数据库异常
  7. LeetCode#3 - 无重复字符的最长字串(滑动窗口)
  8. P 1032 挖掘机技术哪家强
  9. 原生js完成打地鼠小游戏
  10. LIS(最长上升子序列)的 DP 与 (贪心+二分) 两种解法