Spring框架学习

最后,我还是变成了我最讨厌的人。。

Spring是java的一个框架,轻量级+非侵入性,前者指的是它很小,后者指的是业务代码对该框架没有强依赖,不需要靠继承框架提供的类或接口来做事

Spring的两个特点:

1 IoC 控制反转      a类依赖于b类,这样强耦合不好,Spring创造出b的资源并且给a用,降低耦合 ( 但是这样a其实还是要importb,不知道为什么耦合就低了。。)此时b这个对象的所有者是Spring,它的销毁和创建都是框架负责。(IoC又分两个流派,一者开场创建所有对象,一者lazy)

这里的耦合和import没有太大的关系,如果a new了一个b出来,则相当于b的生命周期由a控制,而IoC是把b的生命周期交给框架,相当于左旋了一下,a每次注入一个b,只是使用b做了事情

Spring造出来的b,默认是单例的,即a和c自动注入的是同一个b,如果b有状态则会出问题,可以主动找框架要一个b出来,框架就会给你new一个出来

2 AOP 面向切面编程    类似于unittest、log这种,对一个函数,在start和end或一些特定的时机都要做很固定的事情,例如打log和cleanEnv,频繁的做一件事情很浪费,这里log和cleanEnv被称为切面,Spring提供了一种方式,使得我们可以先对log这一切面进行编程,然后为func声明这一切面,这样可以达到代码复用(golang自带的说?)

@Autowired - java中的一个标签,表示自动注入,如果a要利用IoC调用b,那么就得在xml文件里进行提前声明,这样才能使得a找到b。这可能会造成一个很大的xml。a在类中声明b时,只需要加上这个,编译器就会自己去找b在哪儿。

posted @ 2019-07-19 19:44  天翎月  阅读(139)  评论(0编辑  收藏  举报