最近在公司实习,做爬虫工作。看了一下这个框架的架构,是利用Spring容器,管理对象的实例化。持久层直接使用jdbc对数据进行入库封装。
所以今天就写一下我对Spring做容器的理解。
我们平时写代码时,一般创建对象的时候会直接new一个出来,Spring容器中,我们需要在配置文件中添加bean实例,如
<bean id="demo" class="com.demo"/>
之后,demo对象的实例化就交给了Spring容器,我们只要用代码告诉Spring我们什么时候要用到这个就行了。
那么这样做有什么好处呢?
首先,这个方法叫做控制倒转。对象实例的控制权由代码编写者转到容器。
之后,我们需要通过依赖注入,告诉容器都有哪些对象可以实例化。
具体的注入方法有构造器,setter属性等。
由容器决定对象的实例,回收等,对编码者来说减少了很多工作量,从效率来看,也更高效。
类似的原理还有线程池的概念,由线程池实现对各个线程的调度工作。
需要注意的一点是,当一个对象需要用到另一个对象时,一定在配置文件中写上,如下
<bean id="demo" class="com.demo">
<property name="geoCityService" ref="geoCityService"/>
<property name="cityInfoService" ref="cityInfoService"/>
<property name="provinceInfoService" ref="provinceInfoService"/>
</bean>