Spring Framework 的理解
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring Framework 的理解相关的知识,希望对你有一定的参考价值。
参考技术ASpring Framework 的理解以及可维护性是否得以改善的思考
Spring的特性
提供了一种管理对象的方法 可以把中间层对象有效地组织起来 一个完美的框架 黏合剂
采用了分层结构 可以增量引入到项目中
有利于面向接口编程习惯的养成
目的之一是为了写出易于测试的代码
非侵入性 应用程序对Spring API的依赖可以减至最小限度
一致的数据访问介面
一个轻量级的架构解决方案
对Spring的理解
Spring致力于使用POJOs来构建应用程序 由框架提供应用程序的基础设施 将只含有业务逻辑的POJOs作为组件来管理 从而在应用程序中形成两条相对独立发展的平行线 并且在各自的抽象层面上延长了各自的生命周期
Spring的工作基础是Ioc Ioc将创建对象的职责从应用程序代码剥离到了框架中 通常 中注入方式 setter 和 ctor参数
每个Bean定义被当作一个POJO(通过类名和JavaBean的初始属性或构造方法参数两种方式定义的Bean)
Spring的核心在 springframework beans 更高抽象层面是BeanFactory BeanFactory是一个非常轻量级的容器
关于可维护性的思考
Spring之类的技术确实带来了应用系统的可维护性的提高吗?
Ioc AOP之类的技术 本质上都是将原本位于应用程序代码中 硬编码 逻辑 剥离出来放到了配置文件中(或者其他形式) 主流声音都是认为提高了应用程序的可维护性
但如果从以下方面观察 结合项目实际经验 个人感觉这些技术的应用大大降低了应用程序的可维护性 尤其是面对一个陌生的系统 或者项目人员变动频繁的时候
中断了应用程序的逻辑 使代码变得不完整 不直观 此时单从Source无法完全把握应用的所有行为
将原本应该代码化的逻辑配置化 增加了出错的机会以及额外的负担
时光倒退 失去了IDE的支持 在目前IDE功能日益强大的时代 以往代码重构等让人头痛的举动越来越容易 而且IDE还提供了诸多强大的辅助功能 使得编程的门槛降低很多 通常来说 维护代码要比维护配置文件 或者配置文件+代码的混合体要容易的多
调试阶段不直观 后期的bug对应阶段 不容易判断问题所在
lishixinzhi/Article/program/Java/ky/201311/28692
手动创建Spring项目 Spring framework
之前学习框架一直是看的视频教程,并且在都配套有项目源码,跟着视频敲代码总是很简单,现在想深入了解,自己从官网下载文件手动搭建,就遇到了很多问题记载如下。
首先熟悉一下spring的官方网站:http://spring.io/
平时所说的Spring就是Spring中的一个项目,主页为Project --> Spring Framework : http://projects.spring.io/spring-framework/
介绍了spring framework的基础配置和使用maven搭建的spring环境。这里要手动搭建不适用maven,先下载spring的jar包。
spring在github地址:https://github.com/spring-projects/spring-framework/releases
这就是spring仓库的地址,可以直接下载。
例如:spring-framework-3.2.8.RELEASE,目录结果如下:
docs:spring的官方手册
libs:spring framework所有jar包,
schema:xml约束文件,eclipse提示如果没有的话可以从这导入
Spring官网提供了共20个包,各个包的作用如下:
org.springframework.aop-3.0.6.RELEASE
Spring的面向切面编程,提供AOP(面向切面编程)实现
org.springframework.asm- 3.0.6.RELEASE
Spring独立的asm程序,Spring2.5.6的时候需要asmJar 包3.0.6开始提供他自己独立的asmJar
org.springframework.aspects- 3.0.6.RELEASE
Spring提供对AspectJ框架的整合
org.springframework.beans-3.0.6.RELEASE
SpringIoC(依赖注入)的基础实现
org.springframework.context.support-3.0.6.RELEASE
Spring-context的扩展支持,用于MVC方面
org.springframework.context-3.0.6.RELEASE
Spring提供在基础IoC功能上的扩展服务,此外还提供许多企业级服务的支持,如邮件服务、任务调度、JNDI定位、EJB集成、远程访问、缓存以及各种视图层框架的封装等
org.springframework.core-3.0.6.RELEASE
Spring3.0.6的核心工具包
org.springframework.expression-3.0.6.RELEASE
Spring表达式语言
org.springframework.instrument.tomcat-3.0.6.RELEASE
Spring3.0.6对Tomcat的连接池的集成
org.springframework.instrument-3.0.6.RELEASE
Spring3.0.6对服务器的代理接口
org.springframework.jdbc-3.0.6.RELEASE
对JDBC的简单封装
org.springframework.jms-3.0.6.RELEASE
为简化JMS API的使用而作的简单封装
org.springframework.orm-3.0.6.RELEASE
整合第三方的ORM框架,如hibernate,ibatis,jdo,以及 spring的JPA实现
org.springframework.oxm-3.0.6.RELEASE
Spring 对Object/XMl的映射支持,可以让Java与XML之间来回切换
org.springframework.test-3.0.6.RELEASE
对Junit等测试框架的简单封装
org.springframework.transaction-3.0.6.RELEASE
为JDBC、Hibernate、JDO、JPA等提供的一致的声明式和编程式事务管理
org.springframework.web.portlet-3.0.6.RELEASE
基于protlet的MVC实现
org.springframework.web.servlet-3.0.6.RELEASE
基于servlet的MVC实现
org.springframework.web.struts-3.0.6.RELEASE
整合Struts的时候的支持
org.springframework.web-3.0.6.RELEASE
SpringWeb下的工具包
当时以为导入这些jar包就配置好了spring环境但是一运行就出错了 还有spring依赖的jar包需要导入。
① Spring 工程依赖的公共包
commons-logging-1[1].0.4.jar(只要是做Spring都需要这个包,否则工程起不来)
② 使用SpringAOP功能时依赖的包
aspectjweaver-1[1].5.3.jar
aopalliance-1.0.jar 这个jar包可能会引发异常原因是,lib中多了一个前缀和他相同但不需要的jar包,删除即可。
③ 使用SpringJDBC功能时依赖的包
commons-dbcp.jar
commons-pool.jar
commons-collections-2.1.1.jar(有人说这个jar包必须要有,但是我没引入也可以运行,现在这记录,如果出现问题可以考虑这个因素)。
以上是关于Spring Framework 的理解的主要内容,如果未能解决你的问题,请参考以下文章
spring boot 和spring framework到底学哪个啊?
spring,spring framework,spring mvc,spring web flow有啥区别和联系?
Microsoft .NET Framework 可以随便升级吗?怎么升级呀?