`
com_xpp
  • 浏览: 380273 次
社区版块
存档分类
最新评论

Spring程序员的春天

 
阅读更多

Spring的由来

Spring由来:当J2EE应用程序广泛使用的时候,出现了事务管理之类的核心中间层概念的标准化,但是在众多的时间活动中,都没有很好的办法解决。

由于用EJB开发J2EE应用的人,都知道EJB要严格地继承各种不同类型的接口,类似的或者重复的大量的代码存在。配置也相对很单调和复杂,同样适用JNDI进行对象查询的代码也是单调而枯燥。虽然xdoclet的出现,而有所缓解,但是学习EJB的高昂代价和极低的开发效率,极高的资源消耗,都造成了EJB的适用困难。而Spring的横空出世,就是为了解决这些问题。使用Spring的一个最大的目的就是使J2EE开发更加容易,致力于一个以统一的高效的方式构造整个应用,并将单层框架(Struts、Hibernate)以最佳的组合糅合在一起建立一个连贯的体系。

Spring初衷

1.J2EE开始应该更加简单

2.使用接口而不是使用类,是更好的编程习惯。Spring将使用接口的复杂度几乎降低到了零。

3.为JavaBean提供了一个更好的应用配置框架

4.更多的强调面向对象设计,而不是现行的技术

5.尽量减少不必要的异常捕捉

6.使用应程序更加容易测试

Spring的目标

1.可以令人方便愉快的使用Spring

2.应用程序代码并不依赖于Spring APIs

3.Spring不和现有解决方案竞争,而是致力于将他们融合在一起。

Spring的组成

1.最完善的轻量级核心框架

2.通用的事务管理抽象层

3.JDBC抽象层

4.集成了Toplink,Hibernate,JDOand iBATIS SQL Maps

5.AOP功能

6.灵活的MVC Web应用框架

Spring七模块

1.Spring Core:核心容器,BeanFactory(控制反转)提供了组件声明周期管理,组件的穿件,封装,销毁等功能。

2.SpringContext:ApplicationContext,扩展核心容器,提供事件处理,国际化等功能。它提供了一些企业级服务的功能,提供了JNDI,EJB,RMI的支持。

3.Spring AOP:提供切面支持

4.SpringDAO:提供事务支持,JDBC,DAO支持

5.Spring ORM:对流行的O/RMapping封装或支持

6.Spring Web:提供Web应用上下文,对Web开发提供上的支持,如请求,表单,异常等

7.Spring Web MVC:全功能MVC框架,作用等同于Struts

Spring优点

1. Spring能够有效地组织你的中间层对象,不管你是否选择使用了EJB。如果你仅仅使用了Struts或其他为J2EEAPI特制的frameworkspring致力于解决剩下的问题。

2. Spring能够消除在工程中常见的对Singleton的过多使用。

3. 通过把对接口编程而不是对垒编程的代价几乎减少到没有,Spring能够促进编程习惯的养成。

4. Spring能使EJB的使用成为一个实现选择,而不是必然选择。你能够选择用POJOsIocal EJBs来实现业务接口,而不影响调用代码。

5. Spring帮助你解决了许多问题而不需要EJBSpring能提供一种EJB的代替物,它们适用于许多web应用。例如:Spring能够使用AOP提供声明式事务管理而不通过EJB容器,如果你仅仅需要与单个数据库打交道,甚至不需要一个JTA实现。

6. Spring为数据存取提供了一个一致的框架,无论是使用JDBC还是O/R mapping产品(如Hibernate)。

7. 易于建立测试单元

Spring缺点

1. 降低了可测试性和面向对象程度

2. 中断了应用程序的逻辑,是代码变得不完整,不直观

3. 后期维护比较困难

知识共鸣

Spring的七个模块我们以前都涉及过,我们可以和以前拥有的知识产生联系。

Spring是一个轻量级的控制反转(IoP)面向切面(AOP)的容器框架(是Spring的重头戏,详细介绍),Spring MVC(稍后详细介绍)

知识共鸣点:

SpringDAO:Spring+struts1+hibernate集成项目中,异常层次结构简化错误处理,这样异常,由Spring本身处理。

Spring ORM:Hibernate的应用

Spring Web模块:Spring+struts1集成的项目中

Spring Context:包括企业服务,国际化,电子邮件,校验,调度功能,EJB和JNDI。


总结

上述优点与缺点都是结合自己的经验而写出来的,是自己在学习中一小点点时间,有什么不对之处,亲!请多多指点!

分享到:
评论

相关推荐

    狂神说Spring5最全笔记

    - **Spring**:这个名字本身就寓意着春天的到来,意味着为开源软件世界带来了新的生机与活力。 - **发展历史**:2002年首次推出的Spring框架雏形被称为interface21框架。该框架经过重新设计与功能丰富后,在2004年3...

    LearnJavaToFindAJob:《 Java小白求职之路》,学习JavaTOFindAJob,史上Java最全面试题,一份Java程序员面试需要掌握的核心知识(8K〜20K范围)。包括Java基础,Spring,SpringCloud,Mybatis,MySQL,Redis,Nginx, EL,ZK,MQ,Dubbo,计算机网络,操作系统,Linux等面试题

    HelloCoder1,LearnJavaToFindAJob介绍 :bouquet: LearnJavaToFindAJob是一个帮助Java程序员到找到一份工作的面试指南。涵盖了Java面试的常见翻译,包括:1.1,高频面试题Java基础计算机网络操作系统Linux 塞尔...

    Spring:操作弹簧

    描述中的“春天操作弹簧”可能是对Spring框架的一种诗意表达,强调其在软件开发中的活力和灵活性。 Spring框架的核心特性之一是依赖注入(Dependency Injection,简称DI),这是它解决复杂应用中对象之间依赖关系的...

    JavaCore:Java程序员所需要掌握的核心知识

    Java程序员所需要掌握的核心知识:集合框架,JVM机制,多线程与并发框架,网络协议,SpringIOC,SpringAOP,SpringMVC,SpringCloud,Dubbo,MySQL,分布式,微服务,高并发与高可用等。转载须知:转载请在文首注明...

    Java大数据学习笔记.zip

    Java大数据学习笔记大数据专题JVM春天書目《Java编程思想》《Mybatis从入门到精通》《深入分析Java Web技术内幕》《Java设计模式》《Java EE框架技术》《自顶向下方法》《Spark机器学习进阶实战》《Java编程从入门到...

    lazyers-spring:懒人工具

    "lazyers-spring"这个名字中,"lazyers"显然指的是那些希望省时省力的程序员,而"spring"则可能暗示了它借鉴了Spring框架的一些设计理念,尤其是在依赖注入和面向切面编程方面。Spring框架在Java世界中广受欢迎,其...

    learnSpring:学习春天

    "学习春天"项目是一个以Java为基础,专注于Spring框架的学习资源集合。这个项目涵盖了Spring框架的多个核心组件和概念,旨在帮助开发者深入理解如何利用Spring构建RESTful Web服务。以下是对这些知识点的详细解释: ...

    春天引导form2

    "春天引导form2"可能是指一个基于Spring Boot的Web应用示例,特别是关于表单处理的部分。在这个场景中,“form2”可能指的是一个进阶的表单处理教程或者示例项目,用于演示如何在Spring Boot应用中处理HTTP表单提交...

    spring-github-crx插件

    【描述】:Spring-Github-CRX是一款针对GitHub的浏览器扩展程序,特别设计用于改变GitHub的界面主题,将原本的样式转化为具有春天色彩的弹簧风格。这款插件为用户提供了独特的视觉体验,尤其是在浏览代码仓库、查看...

    tp_project:Hibernate,春天,Maven

    【标题】"tp_project:Hibernate,春天,Maven"揭示了这个项目是关于使用Java的三个关键框架——Hibernate、Spring和Maven进行开发的。这三个技术在Java开发中扮演着重要角色,尤其在企业级应用中。让我们逐一深入...

    你好春天

    "你好春天"这个标题可能是在比喻程序员在学习或使用TypeScript时的感受,如同春天般充满希望和生机。 在深入讲解TypeScript之前,我们先了解它与JavaScript的关系。JavaScript是Web开发的核心语言,但它的动态类型...

    springboot+vue基于springboot+vue的网上服装商城java毕业论文.doc

    6. 春天 Boot 和 Vue.js 的应用:本文档使用 Spring Boot 和 Vue.js 进行系统开发,这两种技术能够提高系统的开发效率和可维护性。 7. 网上服装商城的优点:该网上服装商城能够解决许多传统手工操作的难题,比如...

Global site tag (gtag.js) - Google Analytics