使用spring很久了,最近忽然其实对这东西还是没理解清楚。
学的时候大概就明白spring的作用就是管理bean的,但是具体怎么管理,然后怎么实现过了一遍还是没理解。今天早上忽然看代码的时候有个问题
cntroller的作用是用来交给spring管理,那autowired的作用是什么?
为什么接口层不需要注解
我要用一个类的时候直接new即可,为什么要用spring呢?
实现层为什么又要有注解?
这些问题一下懵逼了。中间的过程就不说了,主要就说下我的理解。
spring的注入和管理是分两部分的,交给spring管理是在类上面的那些注解来做的 Service,Controller,Repository 这些注解是用来交给spring管理的,而注入又是另外的,bean交给spring后,你要用,那是另外的一套,用 Autowired、Resource 来注入,等于有这个才能使用。
为什么要用spring:
如果没有spring,那么需要我们自己来管理类的创建销毁事宜,有了spring,就可以帮我们做这些事情,所以,有些东西也就不需要交给spring来做,比如model就不需要给spring来管理。
为什么接口层不需要注解:
在控制层注入的时候,虽然注入的是接口,但实际上其子类也是可以用的,等价于注入了实现层serviceImpl了。如果没有按照接口编程,而那个类又被spring管理,直接注入这个类的名字即可。