Spring框架
首先根据字面意思来讲,这是一个框架,框架就是对开发的集成,最大的作用就是
简化开发,所以Spring框架的作用就是简化java开发。
其次,在spring中最重要的两点就是IOC和AOP。
对于AOP而言,Java中的面向对象一般都是特定的类实现特定的业务功能,但是也有一些功能是需要融入其他的业务中去的,一般的话直接在代码中插入,这样子增加了代码之间的耦合性,不利于程序的开发,为了降低耦合,又要使方法之间有一定的关联,AOP就应运而生,面向切面编程思想完美的解决了这个问题,在实现原来的方法之前或者之后织入advice即可实现。具体的实现过程如下:
需要增加的功能叫做横切性关注点,
具体的功能实现叫advice
在目标方法之前实现叫before advice,在目标方法之后实现叫after advice。
advice所在的类叫aspect类(切面类)
advice的过滤条件叫pointcut
advice作用在目标方法的过程叫织入(weave)
advice织入在目标方法的位置叫joinpoint。
具体的实现:
使用的是JDK的动态代理实现的:
动态代理类(切面类)和目标类实现同一个接口,使用同一个类加载器。而且有一个引用target指向目标对象,用来执行目标方法。
在真正织入的时候,通过反射执行目标对象目标方法,然后在执行advice。
这就是Aop的强大之处,可以非常灵活的将一些有关联的业务包裹进核心业 务中,这些核心业务甚至不知道这个方法的存在,这就是他的强大之处。 接下来说说IOC. IOC顾名思义就是控制反转,ioc也叫DI,依赖注入,依赖倒置原则,如果不使用依赖倒置原则,那么上层直接依赖下层,如果下层发生了变动,那么下层也要相应的发生变动,这个时候的维护成本就相当的大。所以有了面向接口编程思想,接口里的东西是抽象东西,上层依赖接口,接口的具体实现上层不用管,上层只知道这个接口是实现某种功能的。功能的具体实现可能有许多种,这个时候上层就不需要关心了。 IOC使用的就是这种思想,程序本身并不需要关注于某些功能的实现,将这个任务交给Spring框架来实现,这样就减少了代码之间的耦合性,减少了维护的成本。使得程序只需要从IOC容器中获取对象即可,IOC中的对象可以由程序中配置了@resources或者@autoware的注解的类进行注入。 这个就是依赖注入。