spring 深入学习(一)--实例解析(DI与AOP)
文章目录
前言
都知道Java越简单越好,内聚越高越好。而spring 得目标就是致力于全方位的java开发。
spring实现简单Java开发的方式
一、DI(依赖注入)
1、举一个例子吧.
当有一个人,生病(头疼)了,他需要(神经科)医生来给他治病。用编程的语言来说就是,人(对象)发生了事件(生病),接下来开始创建神经科的医生(对象)实例,医生执行治病(方法)。这种常规化的流程大大提高了对象之间耦合性。
那DI怎么做的呢?
通过DI,对象的依赖关系将由系统中负责协调各对象的第三方组件在创建对象的时候进行设定,对象无需自行创建或管理它们的依赖关系。
用例子解释就是:人的身上有一个系统(spring),各种医生会将自身治病的方传到第三方,当你头疼的时候,你需要神经科医生,这时候不需要你来创建实例,你只要说,我需要医生,DI在第三方组件的医生对象,通过构造器注入对象,实现方法,而且,他有所有医生的治病方法,并不需要你指定为神经科医生,也不要你管理。
这就是DI所带来的最大收益——松耦合
2、基础注入方式
1.通过xml
2.基于Java,用@Bean
Spring提供了基于 提供了基于Java的配置,可作为 的配置,可作为XML的替代方案
二、AOP(面向切面编程)
DI能够让相互协作的软件组件保持松散耦合,而面向切面编程(aspect-oriented programming,AOP)允许你把遍布应用各处的功能分离出来 形成可重用的组件。
1、对比
我们可以把切面想象为覆盖在很多组件之上的一个外壳。应用是由那些实现各自业务功能的模块组成的。借助AOP,可以使用 各种功能层去包裹核心业务层。这些层以声明的方式灵活地应用到系统中,你的核心应用甚至根本不知道它们的存在。这是一个非常强大的理 念,可以将安全、事务和日志关注点与核心业务逻辑相分离。
2、例子
初学的开始,我只了解了一下,他有什么用,在哪个地方发挥了作用
再举个例子吧
一个医生要去给人看病,看病之前他要去向医院拿药,所以在执行看病的方法之前他要先去调用医院对象的药物分配方法。直接提高了医院与医生之间的耦合度,大大提高了代码的复杂性。
而AOP的作用就是,医生去想去看病,spring会自动的调用医院对象实现药物分配方法,让医生不用再自己去调用。医生只要专注自己去看病就行,前置的条件别人都会帮你准备好,甚至都不用知道谁帮你做的。你看,这样是不是变简单了。