Spring之Spring概述
来源:互联网 发布:日常工作提醒软件 编辑:程序博客网 时间:2024/04/29 22:35
Spring是什么?
Spring是一个分层的JavaSE/EEfull-stack(一站式) 轻量级开源框架。
Spring能帮我们解决的问题
基于面向对象编程思想(OOP),我们的应用程序是由一组相互协作的对象组成的,我们在开发应用程序时,需要关心两点:
1.开发业务逻辑
2.如何使这些对象相互协作来完成功能,尽可能的遵循“低内聚、高耦合”的原则
而Spring就帮我们很好的解决了第二点,帮助管理对象以及他们的依赖关系。从而使我们更专注于业务逻辑的开发。
此外,Spring AOP面向切面编程还方便的解决了日志记录、性能统计、安全控制、异常处理等任务。而且还可以管理数据库事务,本身提供JDBC的实现,并可以集成如hibernate、mybatis等持久层框架。
具体描述如下:
1.我们在创建对象和组装对象间的依赖关系时,往往直接在业务逻辑中直接通过new去调用其他对象,这样做的缺点:
(1)不能专注业务逻辑开发
(2)加大对象间耦合
而Spring框架仅仅需要通过配置或注解的方式管理各个对象,并在一个对象需要依赖其他对象时提供依赖注入(DI),从而解决了上述两个缺点。
2.在开发中往往会进行一些日志记录、权限控制、性能统计。
(1)比如记录用户登录的日志,我们传统的方法是在程序的验证用户登录的方法后加入一段代码进行用户信息的记录。这些记录日志的代码和验证用户的业务逻辑代码混在一起,看着一定不爽。
(2)再比如权限控制、性能统计这些代码,大部分都是重复的,即使独立在util包中也得在业务逻辑中重复去调用。
而Spring的面向切面编程(AOP)可以把这些和业务逻辑无关的代码独立出去,仅在需要这些功能的地方动态的添加。
概括为:把可重用的功能提取出来,然后将这些通用功能在合适的时候织入到应用程序中。
3.执行数据库事务(获取连接、执行sql、提交与回滚事务、关闭连接)。
4.自己提供一套JDBC模板、也可以与持久层框架集成(hibernate、mybatis)。
5.集成web框架(struts2),自己也提供了springMVC的web框架。
6.更多的功能与插件集成。。。more and more…
总而言之:
Spring除了不能帮我们写业务逻辑,其余的几乎什么都能帮助我们简化开发
Spring在web应用里如何启动?
在web工程中,我们需要对配置文件applicationContext.xml进行加载并注册其中的bean等信息,那么我们合适加载这个配置文件?
答:在web 启动的时候将applicationContext转到到servletContext中, 因为在web 应用中的所有servlet都共享一个servletContext对象. 那么我们就可以利用ServletContextListener去监听servletContext事件, 当web 应用启动的是时候, 我们就将applicationContext 装载到servletContext中。
所以我们在web.xml做如下配置:
<listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>3 </listener> <!-- 如果applicationContext.xml不在WEB-INF文件夹下,需要设置--> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext.xml</param-value> </context-param>
后面我将分篇介绍Spring的这些功能,每篇都包括理论和实战:
Spring IOC
Spring AOP
Spring整合其他框架
并单独出一个系列介绍Spring MVC
解析Spring源码
Let’s dig that!
- Spring之Spring概述
- Spring基础(一)之Spring概述
- Spring入门之Spring核心与概述
- Spring--Spring之IoC||DI概述
- Spring学习之Spring概述(一)
- spring概述之快速入门
- spring概述
- Spring概述
- Spring 概述
- Spring 概述
- Spring 概述
- spring概述
- spring 概述
- spring概述
- spring概述
- Spring概述
- spring概述
- Spring 概述
- linux后台开发需要的知识
- JavaScript清空、重置form表单
- eclipse中egit插件使用
- Codeforces Round #361 (Div. 2) A,B,C
- Zookeeper场景分析及实例代码
- Spring之Spring概述
- android上的缓存、缓存算法和缓存框架
- 兼职催奶服务开通中,敬请期待
- Glide图片处理框架(含圆角哦)
- Android4.3 蓝牙BLE初步
- Spring中@Async用法总结
- android轻量级开源缓存框架——ASimpleCache(ACache)源码分析
- windows找回鼠标右键丢失的创建图片链接
- 怎样转换照片与excel之间的内容