Spring 的一些基础概念

spring是什么

spring 是一个开源的轻量级控制反转 (inversion of control -> IOC ) 和面向切面( AOP )的容器框架,它主要的目的是简化企业开发

重点:
两大核心特征 //不是什么技术,而是一种思想
1 IOC=控制反转 / (DI=依赖注入)
2 AOP 面向切面编程思想 ,而AOP思想在Spring中最重要的是提供 声明式事务处理

使用Spring 的好处

  • 降低组件之间的耦合度,实现组件各层之间的解耦
  • 可以使用容器提供的众多服务,如:事务管理服务、消息服务等等。当我们使用容器管理事务时,开发人员就不再需要手工控制事务.也不需处理复杂的事务传播
  • 容器提供单例模式支持,开发人员不再需要自己编写实现代码
  • 容器提供了AOP技术,利用它很容易实现如权限拦截、运行期监控等功能
  • 容器提供的众多辅作类,使用这些类能够加快应用的开发,如: JdbcTemplate、 HibernateTemplate
  • Spring对于主流的应用框架提供了集成支持,如:集成Hibernate、JPA、Struts等,这样更便于应用的开发

JPA是什么

JPA是持久称框架的规范,Hibernate就是其中的一个实现者

spring负责的内容

Spring 负责管理容器中所有的组件, 这些组件统称为Bean , 在Spring的概念里,一切都是Bean。其实Spring就是面向Bean的编程(BOP,Bean Oriented Programming )

组成Spring的模块都有什么

组成Spring的模块(组件)都可以单独存在 主要模块如下

1)Srping Core

核心容器: 提供Spring 框架的基本功能,核心容器的主要给件是BeanFactory,它是工厂模式的实现BeanFactory例用控制反转(IOC) 模式将应用程序的配置和依赖规范与实际的应用程序代码分开

2)Spring Context //上下文的一个配置文件

Spring上下文是一个配置文件,向Spring框架提供上下文信息。Spring 上下文包括企业服务,例:JNDI 、EJB、电子邮件、国际化、校验和调度功能。

3)Spring AOP

通过配置管理特性,Spring AOP 模块直接将面向方面的编程功能集成到了Spring 框架中。所以,可以很容易地使Spring框架管理的任何对象支持AOPSpring AOP 模块为基于Spring的应用程序中的对象提供了事务管理服务。通过使用Spring AOP ,不用依赖EJB 组件,就可以将声明性事务管理集成到应用程序中。

4)Sping DAO

DBC DAO抽象层提供了有意义的异常层次结构,可用该结构来管理异常处理和不同数据库供应商抛出的错误消息。异常层次结构简化了错误处理,并且极大地降低了需要编写的异常代码数量(例如打开和关闭连接)。Spring DAO 的面向 JDBC的异常遵从通用的DAO 异常层次结构。

5)Spring ORM

Spring 框架插入了若干个ORM 框架,从而提供了ORM的对象关系工具,其中包括JDOHibernateiBatis SQLMap 。 所有这些都遵从Spring的通用事务和DAO 异常层次结构。

6) Spring WEB

Web上下文模块建立于应用上下文模块之上,提供了一个适合于Web应用的上下文。另外,这个模块还提供了一些面向服务支持。例如:实现文件上传的multipart请求,它也提供了Spring和其它Web框架的集成,比如StrutsWebWork

7) Spring MVC

Spring为构建Web应用提供了一个功能全面的MVC框架。虽然Spring可以很容易地与其它MVC框架集成,例如Struts,但SpringMVC框架使用IoC对控制逻辑和业务对象提供了完全的分离。它也允许你声明性地将请求参数绑定到你的业务对象中,此外,SpringMVC框架还可以利用Spring的任何其它服务,例如国际化信息与验证。

spring的目的

Spring带来了复杂的J2EE开发的春天。它的核心是轻量级的IoC容器,它的目标是为J2EE应用提供全方位的整合框架,在Spring框架下实现多个子框架的组合,这些子框架之间可以彼此独立,也可以使用其它的框架方案加以代替,Spring希望为企业应用提供一站式(one-stopshop)的解决方案

控制反转和依赖注入有什么区别?

IOCDI有什么关系呢?其实它们是同一个概念的不同角度描述,以前创建对象都是通过new关键字去创建,但是用了Spring之后就可以不用这么创建对象了,把控制权交给Spring容器,哪里用对象由容器给,这就是控制反转依赖注入就是站在应用程序的角度,当需要用某个对象的时候,由容器注入进来,这就是依赖注入

Spring的解释:

spring是一个开源的轻量级 控制反转 (inversion of control -> IOC ) 和面向切面( AOP ) 的容器框架,它主要的目的是简化企业开发Spring可以理解为是Bean容器或管理家,我们可以面向接口进行编程,当没有Spring时,我们在业务逻辑层访问数据持久层时,是要new出对象的,这样对项目层次间的解耦不是很好,但是用spring之后,在应用程序中需要对象时,spring就会自动的给我们创建对象注入到我们所需的程序中来也降低了各个层次间的耦合度

spring 中的重要概念

Spring 中二个核心 IOC/DI AOP

1) IOC(控制反转)

应用本身不负责依赖对象的创建和维护,而是交给其他程序去创建, 这样,控制权就由应用转到了外
部容器,控制权的转移, 就叫控制反转

		  public class UserAction{
			  
			  private UserDao userDao=new UserDaoImpl();
			  
			  //业务方法
			  public String add(){
				  userDao.addUser(user);
			  }
		  }
		  
		  ----反转形式
		  public class UserAction{
			  
			  private UserDao userDao=其他人创建(控制权转移);
			  
			  //业务方法
			  public String add(){
				  userDao.addUser(user);
			  }
		  }

2) DI (依赖注入)

当我们把依赖对象交给外部容器负责创建,上面的程序可以改成

		public class UserAction{
			  
			  private UserDao userDao;
			  
			  //业务方法
			  public String add(){
				  userDao.addUser(user);
			  }
			  
			  .....get  set 即可
		  }

在程序运行期,动态的由外部容器(Spring),将依赖对象注进来,这个过程称为依赖注入

3) AOP (Aspect Oriented Programming) 面向切面思想 例如Struts2 中拦截器

  • 可以通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态统一添加功能的一种技术
  • 是目前软件开发中的一个热点,
  • 也是Spring框架中的一个重要内容,利用面向切面编程提供声明式事务管理。(重点)
  • 而Spring中就是通过动态代理来实现AOP的(重点)

有两种方式可以实现aop,一种是根据利用jdk自带的proxy,另外一种是利用cglib的proxy.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值