`

一 spring的介绍

 
阅读更多
1 Spring是什么
Spring是一个开源的控制反转(Inversion of Control ,IoC)和面向切面(AOP)的容器框架.它的主要目得是简化企业开发.

2 什么是控制反转
public class PersonServiceBean {
     private PersonDao personDao = new PersonDaoBean();
	
      public void save(Person person){
            personDao.save(person);
     }
}

PersonDaoBean 是在应用内部创建及维护的。所谓控制反转就是应用本身不负责依赖对象的创建及维护,
依赖对象的创建及维护是由外部容器负责的。这样控制权就由应用转移到了外部容器,控制权的转移就是所谓反转。

3 依赖注入

当我们把依赖对象交给外部容器负责创建,那么PersonServiceBean 类可以改成如下:
public class PersonServiceBean {
     private PersonDao personDao ;
    //通过构造器参数,让容器把创建好的依赖对象注入进PersonServiceBean,当然也可以使用setter方法进行注入。
     public PersonServiceBean(PersonDao personDao){
         this.personDao=personDao;
     }	
      public void save(Person person){
            personDao.save(person);
     }
}

所谓依赖注入就是指:在运行期,由外部容器动态地将依赖对象注入到组件中。

4 为何要使用Spring
至少在我看来,在项目中引入spring立即可以带来下面的好处
降低组件之间的耦合度,实现软件各层之间的解耦。
    

  可以使用容器提供的众多服务,如:事务管理服务、消息服务等等。当我们使用容器管理事务时,
  开发人员就不再需要手工控制事务.也不需处理复杂的事务传播。

容器提供单例模式支持,开发人员不再需要自己编写实现代码。

容器提供了AOP技术,利用它很容易实现如权限拦截、运行期监控等功能。

容器提供的众多辅作类,使用这些类能够加快应用的开发,如: JdbcTemplate、 HibernateTemplate。

Spring对于主流的应用框架提供了集成支持,如:集成Hibernate、JPA、Struts等,这样更便于应用的开发。


5 如果使用Spring, 我们就不再需要手工控制事务
另外,如果使用spring, 我们也不需要处理复杂的事务传播行为
public void payment(){
       Bean1.update();//更新金额
       Bean2.save();//记录操作日志
}
如果我们不使用Spring,针对下面这两种业务需求,我们该如何做?
第1种可能的业务需求:要求Bean1.update()和Bean2.save()在同一个事务中执行。
第2种可能的业务需求:要求不管Bean1.update() 的事务是否成功,都需要记录操作日志。
public class Bean1 { 
      public void update(){//注意:下面省略了一些代码
	 Connection conn = null;
	 conn.setAutoCommit(false);
     	 Statement.executeUpdate(“update account set amount=? where id=?"); 	
      }
}
public class Bean2 {
      public void save(){//注意:下面省略了一些代码
	 Connection conn = null;
	 conn.setAutoCommit(false);
     	 Statement.executeUpdate(“insert into Log (content) values (?)");
      }
}


使用Spring,我们只需要通过声明式的事务属性配置就可以轻松地实现这两种业务需求
1.要求Bean1.update()和Bean2.save()的在同一个事务中执行
2.要求不管Bean1.update() 的事务是否成功,都需要记录日志。
@Transactional(propagation=Propagation.Required)
public void payment(){
       Bean1.update();//更新金额
       Bean2.save();//记录日志
}
 public class Bean1 {
      @Transactional(propagation=Propagation.Required)
      public void update(){
                    executeUpdate(“update account set amount=? where id=?"); 	
      }
}
public class Bean2 {
      @Transactional(propagation=Propagation.RequiresNew)
      public void save(){
	executeUpdate(“insert into Log (content) values (?)");
      }
}



6 轻量级与重量级概念的划分
经常会有同学问到spring属于轻量级框架,还是重量框架?其实划分一个应用是否属于轻量级还是重量级,主要看它使用了多少服务.
使用的服务越多,容器要为普通java对象做的工作就越多,必然会影响到应用的发布时间或者是运行性能.

对于spring容器,它提供了很多服务,但这些服务并不是默认为应用打开的,应用需要某种服务,
还需要指明使用该服务,如果应用使用的服务很少,如:只使用了spring核心服务,那么我们可以认为此时应用属于轻量级的,
如果应用使用了spring提供的大部分服务,这时应用就属于重量级。目前EJB容器就因为它默认为应用提供了EJB规范中所有的功能,
所以它属于重量级。


完毕!end!

 

分享到:
评论

相关推荐

    spring 详细介绍 api

    Spring 框架是Java平台上的一个核心企业级应用框架,由Rod Johnson创建,旨在解决J2EE开发中的复杂性和繁琐性。Spring以其强大的模块化和可扩展性,提供了多种功能,包括但不限于依赖注入(DI,Dependency Injection...

    Spring cloud和Spring boot介绍

    Spring Boot是Spring Cloud的基础,它提供快速开发单个微服务的能力,而Spring Cloud则在此基础上构建了一个全面的服务治理框架。Spring Boot专注于简化单个服务的创建,而Spring Cloud关注的是整个服务网络的协调与...

    spring详细介绍

    Spring框架是Java平台的一个开源应用框架,由Rod Johnson创建,并首次在2003年发布。它被广泛应用于各种规模的Java应用开发中。Spring提供了一个全面的编程和配置模型,可以用于企业级应用开发。Spring的核心是控制...

    spring入门介绍PPT.rar

    Spring框架是中国Java开发领域中最广泛使用的轻量级框架之一,它以其依赖注入...这份"spring入门介绍PPT"将是你深入理解Spring的宝贵资源,通过它,你可以逐步掌握Spring的核心理念和技术,开启你的Spring开发之旅。

    Spring 简介 Spring 简介

    本节将详细介绍Spring的基本概念、特点以及它如何作为一个容器和框架来工作。 首先,Spring 是一个开源的Java框架,由Rod Johnson创建,最初是为了应对EJB(Enterprise JavaBeans)在企业应用开发中带来的复杂性。...

    Spring框架介绍ppt

    **Spring框架介绍** Spring框架是Java开发领域中最广泛使用的开源框架之一,由Rod Johnson在2003年推出。它以其“依赖注入”(Dependency Injection, DI)和“面向切面编程”(Aspect-Oriented Programming, AOP)...

    spring常用模块介绍

    本篇文章将针对Spring框架的常用模块进行详细介绍,旨在帮助初学者理解和掌握Spring的核心概念。 1. **IoC(控制反转)与DI(依赖注入)** Spring的核心特性就是控制反转(Inversion of Control,IoC)和依赖注入...

    SpringCloud系列Demo代码,每个子项目都是SpringCloud的一个知识点

    SpringCloud系列Demo代码,每个子项目都是SpringCloud的一个知识点或者说技能点且都有对应的博客介绍,代码开箱即用适合新手学习或老司机复习。 SpringCloud系列Demo代码,每个子项目都是SpringCloud的一个知识点...

    spring 框架介绍

    Spring的核心特性之一是依赖注入,它允许开发者在运行时将对象之间的依赖关系进行管理,而不是在代码中硬编码这些依赖。通过配置文件或注解,Spring可以自动装配对象,使得代码更易于测试和重构。 **2. ** **控制...

    JAVA Spring介绍 ppt

    Java Spring 是一个开源的轻量级企业级应用程序框架,以其卓越的灵活性和模块化而闻名。它提供了一个全面的编程和配置模型,旨在简化Java开发并促进良好的编程实践。Spring的核心特性包括控制反转(IoC)和面向切面...

    spring的详细介绍

    7. **MVC框架**:Spring MVC是Spring提供的用于构建Web应用的模块,它提供了一个分层架构,包括控制器、模型、视图和处理器映射器等组件,使得Web开发更加灵活和高效。 8. **Spring Boot**:Spring Boot是为了简化...

    Spring+SpringMVC+Hibernate框架集成详解

    在本文档中,我们将详细介绍如何将 Spring、SpringMVC 和 Hibernate 框架集成,以便构建一个完整的 Web 应用程序。我们将介绍如何配置 Spring 框架,如何配置 SpringMVC 框架,如何配置 Hibernate 框架,並且如何将...

    Spring Web Flow 介绍

    Spring MVC提供了一个轻便的高层次的功能:表单控制器实现了一个与定义的页面流程。 Spring Web Flow允许你使用一个简单清晰的方法体现你的页面流程,并且随时重用。关注点:Web流程的逻辑结构和Web事件条件的定义。

    Eclipse 搭建Spring 开发环境

    最后,将下载的 Spring Framework 解压,并将其中的 spring.jar、commons-logging.jar 和 log4j-1.2.15.jar 复制到“D:\java\Spring\lib”目录中,然后在 Eclipse 中建立一个“Springlib”库,将三个文件添加进...

    计算机专业Java外文翻译 中文+英文(Spring框架介绍)

    Spring框架是Java开发领域中的一个核心框架,以其开源、灵活和强大的特性而备受推崇。它旨在解决传统J2EE开发中的复杂性和耦合性问题,提供了一种轻量级、可扩展的架构解决方案。Spring的核心理念是控制反转...

Global site tag (gtag.js) - Google Analytics