【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中-->
<!-- 将dao注入到service中-->
<!--将dao注入到session工厂-->
这样在Action调用service或是在service中调用dao就可以直接使用,不必再写代码进行实例化。
小结
在ITOO中开始接触到容器、依赖注入这样的名词,而在java的学习中还是同样的内容,工作的原理也是一样
的,只是换了中语言换了中开发环境,现在的学习即使对新知识的学习也是对旧知识的总结,收获感还是挺强的!
首先明确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的学习中还是同样的内容,工作的原理也是一样
的,只是换了中语言换了中开发环境,现在的学习即使对新知识的学习也是对旧知识的总结,收获感还是挺强的!
相关文章推荐
- 一个jar包里的网站
- 一个jar包里的网站之文件上传
- 一个jar包里的网站之返回对媒体类型
- Spring整合Quartz(JobDetailBean方式)
- Spring整合Quartz(JobDetailBean方式)
- c++中容器之总结篇
- JavaScript中的依赖注入详解
- 浅析依赖注入框架Autofac的使用
- 浅析Node.js中使用依赖注入的相关问题及解决方法
- 模拟Spring的简单实现
- spring+html5实现安全传输随机数字密码键盘
- Spring中属性注入详解
- SpringMVC框架下JQuery传递并解析Json格式的数据是如何实现的
- struts2 spring整合fieldError问题
- spring的jdbctemplate的crud的基类dao
- 读取spring配置文件的方法(spring读取资源文件)
- java获取web容器地址的方法
- Spring Bean基本管理实例详解
- java实现简单美女拼图游戏
- 详解Java的Spring框架中的事务管理方式