您的位置:首页 > 编程语言 > Java开发

【SSH】之spring

2016-02-21 17:38 417 查看
        spring这个词很熟悉,但是它到底是个什么,又有什么作用呢?对他的概念一直是很模糊的查了一些资料也没有理解清楚的,现在只是在学习过程中遇到了它的使用,先做初步总结为进一步学习做基础。

        首先明确spring是一个开源的框架,我们经常所说的springmvc是使用spring进行web端开发。而在SSH框架中spring充当的是管理容器的角色。

        那容器又是什么呢,我们经常说IOC容器,IOC即Inversion of Control(控制反转)这到底是什么意思呢?举一个生活中常见的例子。有一个小伙子想要找一个女朋友,按照传统的方式就是自己先寻找感觉合适的,然后开始找各种办法联系到女孩,如果合适就在一起达到了自己的目的,整个过程都需要自己去负责。这就像我们传统的调用类的方法一样。找到合适的类,然后自己使用new实例化、调用类中的方法,最后实现功能。

        而有了容器就相当于是有了一个介绍所,这个介绍所中有各种女孩以及她们的资料,男孩提供自己的择偶标准,介绍所推荐女孩同时提供联系方式男孩只需要和女孩与会,就省去了自己麻烦的过程。就相对是使用了容器,有容器来负责创建和管理类,在你需要的时候提供给是和你的类。

        为什么叫做控制反转呢?所有的类的创建、销毁都由 spring来控制,也就是说控制对象生存周期的不再是引用它的对象,而是spring。对于某个具体的对象而言,以前是它控制其他对象,现在是所有对象都被spring控制,所以这叫控制反转。

        IOC在运行中可以动态的向某个类提供其所需要的对象是通过依赖注入(Dependency Injection)实现的,注入可以这样理解,假设有一个类A需要调用类B,没有spring时需要在类A中编写代码获得类B,现在有spring则是有spring负责创建一个类B然后类似打针一样注入到类A中,类A依赖类B所以就成为依赖注入。

        在SSH框架中的大致流程是:Jsp页面----Struts------Service(业务逻辑处理类)---Hibernate(左到右)struts负责控制Service(业务逻辑处理类),从而控制了Service的生命周期,这样层与层之间的依赖和强,属于耦合。这时,使用spring框架就起到了控制Action对象(配置在Strus.xml配置文件中的)和Service类的作用,两者之间的关系就松散了。在程序中是如何具体体现的呢?在项目中有一个ApplicationContext.xml配置文件,ApplicationContext实现的默认行为就是在启动时将所有singleton
bean提前进行实例化(也就是依赖注入),下面的代码中以体现了action、service、dao之间的关系。

<!-- 将service注入到action中-->

<!-- Action的配置 ===========================-->
<bean id="orderAction" class="cn.itcast.shop.order.action.OrderAction" scope="prototype">
<property name="orderService" ref="orderService"/>
</bean>


<!-- 将dao注入到service中-->   

<!-- Service的配置 ===========================-->
<bean id="orderService" class="cn.itcast.shop.order.service.OrderService">
<property name="orderDao" ref="orderDao"/>
</bean>


<!--将dao注入到session工厂-->

<!-- Dao的配置 ===========================-->
<bean id="orderDao" class="cn.itcast.shop.order.dao.OrderDao">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>


这样在Action调用service或是在service中调用dao就可以直接使用,不必再写代码进行实例化。

小结

        在ITOO中开始接触到容器、依赖注入这样的名词,而在java的学习中还是同样的内容,工作的原理也是一样

的,只是换了中语言换了中开发环境,现在的学习即使对新知识的学习也是对旧知识的总结,收获感还是挺强的!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  spring 容器 依赖注入