`

一 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 cloud和Spring boot介绍

    Spring Boot简化了基于Spring的应用开发,通过少量的代码就能创建一个独立的、产品级别的Spring应用。Spring Boot为Spring平台及第三方库提供开箱即用的设置,这样你就可以有条不紊地开始。多数Spring Boot应用只...

    spring 框架介绍

    spring 框架介绍

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

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

    Spring Cloud之一 Spring Cloud简介

    Spring Cloud之一 Spring Cloud简介,简单介绍SpringCloud,微服务,SOAP等内容

    Spring Web Flow 介绍

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

    介绍Spring Cloud Stream与RabbitMQ集成

    介绍Spring Cloud Stream与RabbitMQ集成的代码示例。Spring Cloud Stream是一个建立在Spring Boot和Spring Integration之上的框架,有助于创建事件驱动或消息驱动的微服务。

    spring介绍及应用

    Spring框架是一个开放源代码的J2EE应用程序框架,由Rod Johnson发起,是针对bean的生命周期进行管理的轻量级容器(lightweight container)。 Spring解决了开发者在J2EE开发中遇到的许多常见的问题,提供了功能强大...

    精通Spring MVC 4

    本书共计10章,分别介绍了快速搭建Spring Web应用、精通MVC结构、URL映射、文件上传与错误处理、创建Restful应用、保护应用、单元测试与验收测试、优化请求、将Web应用部署到云等内容,循序渐进地讲解了Spring MVC4...

    spring的详细介绍

    这是一个关于spring的详细的介绍,对spring进行了详细的讲解,大家可以好好看看。

    Spring介绍和DEMO

    Spring介绍 一 Spring的主要技术 1 IOC: 2 AOP动态代理: 3 Spring中支持事务管理

    Spring技术内幕:深入解析Spring架构与设计原理

    一部分详细分析了Spring的核心:IoC容器和AOP的实现,能帮助读者了解Spring的运行机制;第二部分深入阐述了各种基于IoC容器和AOP的Java EE组件在Spring中的实现原理;第三部分讲述了ACEGI安全框架、DM模块以及Flex...

    基于Spring Boot 3.0、 Spring Cloud 2022 & Alibaba 的微服务RBAC 权限管理系统

    介绍一个基于Spring Boot 3.0、Spring Cloud 2022 & Alibaba的微服务RBAC权限管理系统。该系统可以实现微服务RBAC权限管理,通过RBAC权限管理机制对用户访问系统的权限进行限制,从而提高系统的安全性和可用性。同时...

    spring框架api中文版.zip(spring开发手册)

    介绍Spring框架 1.1。 依赖注入和控制反转 1.2。 模块 1.2.1。 核心容器 1.2.2。 数据访问/集成 1.2.3。 web 1.2.4。 AOP和仪表 1 2 5。 测试 1.3。 使用场景 1.3.1。 依赖关系管理和命名约定 Spring依赖和依靠弹簧...

    Spring攻略PDF版

     2.1.1 Spring的模块介绍   2.1.2 Spring的发布版本   2.1.3 Spring的项目   2.2 安装Spring Framework   2.2.1 问题描述   2.2.2 解决方案   2.2.3 实现方法   2.3 建立Spring项目 ...

    spring2.0技术手册

    它通过实际完成一个完整的Spring项目示例,展示了与Spring相关API的使用技巧,能够显著减少每一位入门者摸索Spring API的时间。《Spring 2.0技术手册》是学习Spring Web开发的最佳读物,它能让读者在示例学习中获得...

    Spring教程  主要内容:介绍Spring的历史,Spring的概论和它的体系结构,重点阐述它在J2EE中扮演的角色。

    (用户持久化类)重构第一步——面向接口编程 8 重构第二步——工厂(Factory)模式 9 重构第三步——工厂(Factory)模式的改进 10 重构第四步-IoC容器 11 控制反转(IoC)/依赖注入(DI) 11 什么是控制反转/依赖...

    spring batch批处理 教程

    三,Spring Batch流程介绍 5 四,Spring Batch之Step执行过程介绍 6 五,Spring Batch应用 7 1,简单应用 7  构建应用 7  对象定义 7  读写及处理接口 8  任务定义 10  任务执行 11  任务重试 13  ...

    spring第一天课堂笔记

    黑马spring第一天课堂笔记,关于spring介绍和入门都比较基础的文档。

Global site tag (gtag.js) - Google Analytics