IOC:控制反转(又名:依赖注入)
正常情况下(无IOC):
你制作一件家具
你需要锤子,自己去找锤子
你需要扳手,自己去找扳手
你需要锯子,自己去找锯子
家具完成了
IOC情况下:
制作前,你把锤子,扳手,锯子给管家(所以称为:依赖注入)
你制作一件家具
你需要锤子,管家递给你锤子(所以称为:控制反转)
你需要扳手,管家递给你扳手
你需要锯子,管家递给你锯子
家具完成了
你管家就是Spring,锤子,扳手,锯子就是各类方法,你把各类方法依赖注入给Spring,他帮你管理,你自己不用控制了,就是控制反转。你是不是就轻松了许多?
AOP:面向切面编程
你经营一家一个人的公司
你需要自己做产品,设计,开发,招人,理财
你经营一家AOP公司
你把开发交给了产品经理(把各种方法代码封装成切面类)
你把员工交给了人事经理
你把财务交给了财务经理
有一天,你开一道新的产品线(开一个新的事件)
你觉得需要运营,你把市场经理招进来了(添加新的切面类)
你觉得人事经理不行,你把人事经理换了(修改以前的切面类)
AOP就在于让你明确关注点,为你提供事务的管理,明确现在的事情,其他事情交给Spring去做。