如何进行Spring的概念分析,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
1.1 Spirng概述
Spring的缔造者:Rod Johnson 悉尼大学计算机学士学位,同时还是音乐学博士,也许是音乐的细胞赋予了它程序设计美学的灵感,让他成就了Spring的简约与优雅。
由艺术美学转变到程序美学,不止有Spring的缔造者,还有前端的三大主流框架之一Vue的缔造者(Evan You),Evan You获得Design & Technology艺术硕士学位,可能正是因为这种追求设计美感的精神,才促进了Vue的诞生。
2004年3月24日,发布1.0版本。
1.2 关于SpringSource
Rod Johnson在Spring 1.0发布的时候,就和他的骨干团队成立了SpringSource公司,以Spring的开源框架为依托,成功开展了很多代表不同技术领域的子项目。
2007年5月,SpringSource吸引Benchmark Capital风险投资商。
2008年,SpringSource收购G2One(Groovy编程语言),Grails Web,Covalent(为Apache的Tomcat应用服务器提供支持的公司)。
2009年,SpringSource收购了开源系统检测厂商Hyperic。Hyperic的核心产品是Hyperic HQ,该产品提供了硬件和操作系统、虚拟机、数据库及应用服务器的可用性检测。
2009年8月11日,VMware收购SpringSource公司。
2012年,Spring 创始人Rod 离开SpringSource和VMware。
2013年,SpringSource团队发布了Spring Framework 4.0版本。
1.3 Spring 带给我们什么
EJB的复杂难学习,难于测试,因此易于上手,易于开发,易于测试的框架应运而生,Spring因此就诞生,取其了EJB的精华。
Spring带给我们的好处:
1. 方便解耦,简化开发,提供了IoC容器。
2. AOP编程的支持。
3. 声明式事务的支持。
4. 方便程序的测试。
5. 方便集成各种优秀框架。
6. 降低Java EE API的使用难度。
7. Spring源码是经典的学习案例。
1.4 Spring 体系结构
IoC和AOP是Spring所依赖的根本。主要由以下五个部分组成:
1. IoC
Spring核心功能实现IoC的功能,它将类与类之间的依赖从代码中脱离出来,用配置的方式进行依赖关系描述,由IoC容器负责依赖类之间的创建、拼接、管理、获取等工作。
BeanFactory接口是Spring框架的核心接口;
Context模块构建于核心模块之上,扩展了BeanFactory的功能;例如,添加了i18n国际化、Bean生命周期控制、框架事件体系、资源加载透明化等多项功能。
ApplicationContext是Context模块的核心接口。
2. AOP
AOP是继OOP之后,对编程设计思想影响极大的技术之一。Java 5.0引入java.lang.instrument,允许在JVM启动时启用一个代理类,通过该代理类在运行期修改类的字节码,改变一个类的功能,从而实现AOP的功能。
3. 数据访问与集成
Spring站在DAO的抽象层面,建立了一套面向DAO层统一的异常体系,同时将各种访问数据的检查型异常转换为非检查型异常,为整合各种持久层框架提供基础。这样,Spring就建立起了和数据形式及访问技术无关的统一的DAO层,借助AOP技术,Spring提供了声明式事务的功能。
4. Web及远程操作
该模块建立在Application Context模块之上,提供了Web应用的各种工具类,如通过Listener或Servlet初始化Spring容器,将Spring容器注册到Web容器中。还提供了面向Web功能,例如FreeMarker,Velocity,还可以整合Struts、WebWork等MVC框架。
5. Web及远程访问
Spring自己提供了一个完整的类似于Struts的MVC框架,称为SpringMVC,如果不希望使用SpringMVC,那么Spring对Struts、WebWork等MVC框架的整合,可以可以带来方便,相对于Servlet的MVC,Spring在简化Portlet的开发上也做了很多工作。
6. WebSocket
WebSocket提供了一个在Web应用中高效、双向通信,需要考虑到客户端和服务器之间的高频和低时延消息交换,一般有在线交易、游戏、协作、数据可视化等,此外,Spring在远程访问及Web Service上提供了很多著名框架的整合。
1.5 Spring 对Java版本的要求
Spring4.0 基于 Java 6.0,全面支持Java 8.0。运行Spring 4.0 必须使用Java 6.0以上的版本,推荐使用Java 8.0及以上版本,如果要编译Spring 4.0,则必须使用Java 8.0.
1.6 Spring 4.0新特性
全面支持Java SE 8 、Java EE 7,而且向下兼容到Java SE 6 / Java EE 6,并移除过时的类,添加如泛型依赖注入、Lambda表达式、Groovy DSL定义Bean、核心容器增强、Web框架增强、WebSocket模块的实现、测试增强等功能,全面支持REST风格的开发。
1.6.1 全面支持Java 8.0
1. Java 8.0 新特性
1)Java 8.0 的 Lambda表达式
2)Java 8.0 的时间与日期API
3)重复注解支持
4)空指针终结者:Optional<>,有些对象永远都不会为空,作非空判断有些多余
1.6.2 核心容器的增强
Spring 4.0支持泛型依赖注入
1. @Autowired
portected BaseDao<M> dao;
2. @Autowired
private Map<String, BaseService> map;
3. @Lazy 延时注入
4. @Conditional : 类似于@Profile,一般在多个环境进行配置切换(开发,生产环境)
5. CGLIB代理类增强:在Spring 4.0中,基于CGLIB的代理类不在要求类必须有空参构造器
1.6.3 支持用Groovy 定义Bean
Groovy有诸多不足,错误提示不友好,学习曲线高
1.6.4 Web的增强
@RestController,方便REST开发,同时添加了一个AsyncRestTemplate,支持REST客户端的异步无阻塞请求
1.6.5 支持WebSocket
双向通信(在线交易,游戏,协作,数据可视化),浏览器IE<10不支持
1.6.6 测试的增强
@Sql @AbstractTransactionalJUnit4SpringContextTests
1.6.7 其他
JCache支持,动态语言支持,多线程并发处理支持,增强持久化处理
看完上述内容,你们掌握如何进行Spring的概念分析的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注亿速云行业资讯频道,感谢各位的阅读!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。