【Spring】1.Spring初接触
EJB的目标是简化企业级系统开发,但没有实现。
EJB的声明式编程模型确实简化了很多基础设施层面的开发,如事务和安全,但在部署文件维护和各种接口(Home、remote/local接口)实现等方面变得很复杂。
EJB是为解决复杂问题而设计的,如分布式对象和远程控制等问题。
AOP和IoC为javaBeans提供了很多EJB才有的功能,为Javabeans提供了类似于EJB那样的声明式编码模式,但没有像EJB那样的问题。
Spring简化了企业级系统的开发,这就是使用它的好处。
使用Spring,系统的复杂程度是和要解决的问题的复杂程度相关的。
Spring是轻量级的非侵入式的IoC和AOP容器框架。
反向控制:Spring提倡IoC来实现松耦合。使用IoC对象是被动接收依赖类而不是主动去找,可以将IoC理解为JNDI的反转——对象不是从容器中查找它的依赖类,而是容器在实例化对象的时候主动将他的依赖类注入给它。
面向切面:通过将业务逻辑从系统服务(如监控和事务管理)中分离出来,实现了内聚开发。系统对象只做他们该做的——业务逻辑,它们不负责其他系统问题。
容器:Spring是一个容器,它包含并且管理系统对象的生命周期和配置。可通过配置来设定Bean是单一实例或每次请求生成实例。
从上图中可以看出Spring框架中的核心组件只有三个:Core、Context和Beans。它们构建起了整个Spring的骨骼架构。
1).Spring可以让你把对象之间的依赖关系转而用配置文件来管理,也就是他的依赖注入机制;
2).Context就是一个Bean关系的集合,这个关系集合又叫Ioc容器;
3).Core就是发现、建立和维护每 个Bean之间的关系所需要的一些列的工具,从这个角度看来,Core这个组件叫Util更能让你理解。
Spring模块划分
核心容器:
Spring核心容器为Spring框架提供了基础功能,在这个模块中会找到BeanFactory类,是所有基于Spring框架的核心。该类采用工厂模式来实现IoC,将系统额配置和依赖关系从代码中分离出来。
Application Context (上下文)模块
可以这样理解,核心模块中的BeanFactory使Spring成为容器的话,则上下文模块就是使Spring成为框架的原因,该模块扩展了BeanFactory,添加了I18N、系统生命周期事件以及验证的支持。
AOP模块
JDBC抽象及DAO模块
编写JDBC代码时总是要写一些样板式的代码,如获取连接、创建语句、处理结果、关闭连接。该模块把这些样板式的代码抽象出来,让数据库代码变得简单明了,也可避免释放资源失败而报错。
该模块利用Spring的AOP模块为Spring系统中的对象提供事务管理服务。
O/R映射集成模块
Spring为Hibernate、JDO、iBatis提供了ORM模块
Spring的Web模块
Spring MVC
该框架利用IoC将控制逻辑和业务逻辑清晰的分离出来,可自己声明如何将请求参数绑定到业务对象中。
基于Spring系统和其他系统的不同是:如何配置类并将他们组合起来。
<beans>是Spring配置文件的根元素,<bean>元素用来在Spring容器中定义一个类以及他的配置信息。
Spring的应用主要是在于如何使用IoC将一个Bean注入到另一个Bean中。
IoC又叫依赖注入。使软件组件间松散耦合。
Spring是容器框架,用于配置bean并维护bean之间关系的框架
bean的概念:是java 中的任何一种对象,javabean,service,action,dao,数据源等。