Spring,我个人觉得对一个JAVA开发人员来讲是一个很重要的东西,无论你是学习J2EE还是学习编程模式。SPRING带给你的可以不仅仅是一个应用的架构,而是真正JAVA主流技术的体现。如果你能完全理解SPRING的精神,恭喜你,你已经属于不一般的开发人员了。这篇文章为自己梳理SPRING的理解做一个总结,希望有高人能不断指点。
IOC和AOP,这两个是SPRING中最核心的两个思想。
AOP(Aspected Oriented Programming)是一种新兴的编程技术。面向方面编程 (AOP) 提供从另一个角度来考虑程序结构以完善面向对象编程(OOP)。 面向对象将应用程序分解成各个层次的对象,而AOP将程序分解成各个方面或者说关注点 。Spring的一个关键组件就是AOP框架。
在J2EE应用中,AOP拦截到方法级的操作已经足够。OOP倡导的是基于setter/getter 的方法访问,而非直接访问域,而Spring 有足够理由仅仅提供方法级的连接点。为了使控制反转(IoC)很方便的使用到非常健壮、灵活的企业服务,则需要Spring AOP 的实现。用Spring AOP实现开发中松散耦合,这个正是SPRING的最终目的,暂时牺牲一点效率不要紧,关键是给大家带来了一种全新的设计理念。效率可以继续提高,理念才是科学解决问题之道。我也在不断理解它,这需要一点时间去琢磨。
IoC又被翻译成“控制反转”,它其实是一种设计模式,Spring只是实现了这种设计模式。一个人学习编程一般都有这么几个阶段:
第一阶段:用普通的无模式来写Java程序。一般初学者都要经过这个阶段。
第二阶段:频繁的开始使用接口,这时,接口一般都会伴随着使用工厂模式。
第三阶段:使用IoC模式。工厂模式还不够好:(1)因为的类的生成代码写死在程序里,如果你要换一个子类,就要修改工厂方法。(2)一个接口常常意味着一个生成工厂,会多出很多工厂类。
可以把IoC模式看做是工厂模式的升华,可以把IoC看作是一个大工厂,只不过这个大工厂里要生成的对象都是在XML文件中给出定义的,然后利用Java的“反射”编程,根据XML中给出的类名生成相应的对象。从实现来看,IoC是把以前在工厂方法里写死的对象生成代码,改变为由XML文件来定义,也就是把工厂和对象生成这两者独立分隔开来,目的就是提高灵活性和可维护性。
IoC最大的好处是什么?因为把对象生成放在了XML里定义,所以当我们需要换一个实现子类将会变成很简单(一般这样的对象都是现实于某种接口的),只要修改XML就可以了,这样我们甚至可以实现对象的热插拨(有点象USB接口和SCIS硬盘了)。
IoC最大的缺点是什么?(1)生成一个对象的步骤变复杂了(其实上操作上还是挺简单的),对于不习惯这种方式的人,会觉得有些别扭和不直观。(2)对象生成因为是使用反射编程,在效率上有些损耗。但相对于IoC提高的维护性和灵活性来说,这点损耗是微不足道的,除非某对象的生成对效率要求特别高。(3)缺少IDE重构操作的支持,如果在Eclipse要对类改名,那么你还需要去XML文件里手工去改了,这似乎是所有XML方式的缺憾所在。
Spring中IOC的实现的核心是其Core Bean Factory,它将框架内部的组件以一定的耦合度组装起来,并对使用它的应用提供一种面向服务的编程模式(SOP:Service-Orient Programming),比如Spring中的AOP、以及持久化(Hibernate、ibatis)的实现。这里就是我为什么这么看好SPRING的原因,它把众多服务都耦合进来,提供一种协议化的服务,耦合看起来是那么的美妙,我们有了SPRING,可以少写好多冗余的代码了哦!比如JDBC,HIBERNATE,IBATIS,JMS,JTA等等,获得相应的模板,你就可以对它们进行操作了。JMS类似可以用getJmsTemplate(),JDBC可以用getJdbcTemplate(),IBATIS中的getSqlMapClientTemplate(),是不是有点领会了啊,呵呵。所以我看好SPRING,RMI,WEB SERVICE它都能搞定,你还有什么理由不去用SPRING了?
记住五个字:松散的耦合,真正理解它后,你会明白我为什么要你记住它了。
分享到:
相关推荐
**Spring AOP 概念理解** Spring AOP(Aspect Oriented Programming,面向切面编程)是Spring框架的一个重要组成部分,它允许我们通过定义“切面”来模块化横切关注点,比如日志、事务管理、性能监控等。在传统的...
Spring框架是Java开发中不可或缺...《Spring深入解析》PPTX和《SpringStudy》可能包含详细的讲解和示例,可以帮助你更好地理解和应用这些概念。在面试中,对这些原理的清晰理解会让你脱颖而出,展示出深厚的技术功底。
这本书由方志朋撰写,旨在帮助读者全面理解Spring Cloud的核心概念和技术,并学会如何在实际项目中应用。 首先,Spring Cloud的核心组件是不能忽视的。Eureka是服务发现组件,它允许服务提供者注册自己,而服务消费...
《Spring 揭秘:全面深入了解Spring》是一本旨在帮助开发者深入理解并熟练掌握Spring框架的权威指南。Spring是Java企业级应用开发中的基石,它以其模块化、易用性和强大的功能深受开发者喜爱。这本书详细阐述了...
### Spring学习笔记(概念理解) #### 一、Spring的IoC(Inversion of Control) IoC,即控制反转,是Spring框架中的核心特性之一。通过理解IoC的基本概念及其背后的实现原理,可以帮助开发者更好地掌握Spring框架。 ...
在Java开发中,Spring容器(也称为ApplicationContext或BeanFactory)扮演着重要角色,它通过控制反转(Inversion of Control, IOC)和依赖注入(Dependency Injection, DI)的概念,帮助开发者构建松散耦合的系统。...
《深入理解Spring Cloud与微服务构建》是一本专注于讲解如何使用Spring Cloud构建高效、可靠的微服务系统的书籍。Spring Cloud作为目前最流行的微服务框架之一,它提供了大量的工具和服务,帮助开发者快速搭建分布式...
在深入探讨Spring Boot、Spring Cloud和Eureka的集成应用之前,我们先来理解这些关键概念。Spring Boot是一款用于简化Spring应用程序开发的框架,它通过自动配置、起步依赖和内嵌服务器等功能,使得开发者能够快速...
### Spring MVC基本概念 在Java Web开发领域,Spring MVC框架是一种非常流行的模型-视图-控制器(Model-View-...随着对这些基本概念的深入理解,开发者将能够充分利用Spring MVC的强大功能,提高开发效率和软件质量。
在深入理解 Spring 原理之前,我们需要先了解以下几个关键概念: 1. **依赖注入(DI)**: 依赖注入是 Spring 的核心特性之一,它解决了传统 Java 应用中对象间的耦合问题。DI 允许我们声明所需的服务,而无需手动...
《Spring Cloud实战》一书深入探讨了Spring Cloud这一强大的微服务框架,它...通过阅读《Spring Cloud实战》这本书,读者可以深入理解这些概念和技术,并将它们应用于实际项目中,从而提升自身在微服务领域的专业素养。
"Spring"的理解不仅仅是框架本身,它代表了一个完整的生态系统,包括Spring Boot、Spring Cloud等。Spring的历史可以从其诞生背景和演进过程来理解,它从一个轻量级的IoC容器发展成为现代企业级应用开发的基石。设计...
本文将针对Spring框架的关键组件和核心概念进行详细的解释。 首先,Spring的核心是依赖注入(Dependency Injection,DI)。在传统的编程模式中,对象通常会自行创建所需的依赖项,而在Spring中,这些依赖由容器来...
本学习提纲旨在为初学者提供一份详尽的Spring 2.0学习指南,帮助他们系统地掌握这个框架的核心概念和技术。 一、Spring概述 1. Spring框架介绍:理解Spring的起源,目标及主要功能,包括简化Java EE开发、提供容器...
《Spring in Action》是Spring框架领域的一本经典著作,它以深入浅出的方式介绍了Spring框架的核心概念和技术。这本书的中文版对于中国的Java开发者来说是一份非常宝贵的资源,它帮助我们理解并掌握Spring框架,从而...
总之,这份“传智播客2016spring资料4”是Spring框架学习的重要资源,涵盖了一系列核心概念和技术,对于想深入理解和掌握Spring框架的人来说,是非常宝贵的参考资料。通过学习这些内容,开发者能够提升自己的技能,...
通过这两部视频的学习,开发者不仅能深入理解SpringCloud的基本概念和核心组件,还能通过实战案例提升微服务开发和管理的能力。无论是初学者还是有经验的开发者,都能从中受益匪浅,进一步提升自己的微服务架构设计...
这些资源可以帮助开发者更快地理解和实践上述概念。 总的来说,将Spring Cloud Gateway与Spring Security相结合,可以构建出一套高效、安全的微服务认证系统,提高整体系统的稳定性和用户体验。这种整合不仅简化了...
这个学习资料和文件包很可能是为了帮助开发者深入理解Spring框架的核心概念和实践技巧。 1. **Spring框架概述** Spring 是一个开源的Java平台,它提供了全面的应用程序开发框架,减少了Java EE(现在称为Java EE或...
这份笔记旨在帮助开发者理解和掌握SpringCloud的核心概念、组件以及实践方法。 在SpringCloud的学习中,首先需要了解的是SpringCloud的基础概念,包括它为何而生,以及它如何解决在分布式系统中常见的问题,如服务...