框架介绍
框架是一种可重用代码的一种设计,具有高度可重用性( 半成品 )
比如说,在设计一个书城项目:涉及到一些类,将它们打包为jar,再将其中一些jar抽取成高度可重用的;事务控制的,强大的Servlet,项目的一些工具
框架:多个可重用模块的集合,形成能一个领域的整体解决方案
Spring 容器
可以用来管理所有 组件(类) 的框架
核心:IOC AOP
- Spring是一个开源框架
- Spring为简化企业级开发而生,使用Spring,JavaBean就可以实现很多以前要靠EJB(Enterprise JavaBean)才能实现的功能。同样的功能,在EJB中要通过繁琐的配置和复杂的代码才能够实现,而在Spring中却非常的优雅和简洁
- Spring是一个IOC(DI)和AOP容器框架。
- Spring的优良特性
- 非侵入式:基于Spring开发的应用中的对象可以不依赖于Spring的API
- 依赖注入:DI——Dependency Injection,反转控制(IOC)最经典的实现。
- 面向切面编程:Aspect Oriented Programming——AOP
- 容器:Spring是一个容器,因为它包含并且管理应用对象的生命周期
- 组件化:Spring实现了使用简单的组件配置组合成一个复杂的应用。在 Spring 中可以使用XML和Java注解组合这些对象。(可以导入部分包)
- 一站式:在IOC和AOP的基础上可以整合各种企业应用的开源框架和优秀的第三方类库(实际上Spring 自身也提供了表述层的SpringMVC和持久层的Spring JDBC)。
Spring插件安装

Spring 模块

- Test: Spring 的单元测试模块
- Core Container: 核心容器(IOC);黑色的那部分代表这部分的功能有哪些jar包组成
1
spring-beans-4.0.0.RELEASE.jar、spring-context-4.0.0.RELEASE.jar、spring-core-4.0.0.RELEASE.jar、spring-expression-4.0.0.RELEASE.jar - AOP+Aspects(面向切面编程模块)
1
spring-aop-4.0.0.RELEASE、spring-aspects-4.0.0.RELEASE.jar - 数据访问模块
1
2
3spring-jdbc-4.0.0.RELEASE、spring-orm(Object Relation Mapping)-4.0.O)RELEASE
spring-ox(xml)m-4.0.0.RELEASE、spring-jms-4.0.0.RELEASE(integration)
spring-tX-4.0.0.RELEASE(事务) - Web: Spring 开发web应用模块
1
2
3
4spring- websocket(新的技术)-4.0.日. RELEASE、
spring-web-4. e.0. RELEASE、和原生的web相关(servlet )
spring- webmvc-4.0.0. RELEASE、开发web项目的(web)
spring- webmvc-portlet-4. e.日. RELEASE (开发web应用的组件集成)
使用时只需要导入对应的包即可
开发Spring框架的应用,经常要写框架的配置文件,写起来复杂,我们需要提示
eclipse安装需要安装插件

IOC (Iversion Of Control):控制反转
在应用程序中的组件需要获取资源时,传统的方式是组件主动的从容器中获取所需要的资源,在这样的模式下开发人员往往需要知道在具体容器中特定资源的获取方式,增加了学习成本,同时降低了开发效率。
反转控制的思想完全颠覆了应用程序组件获取资源的传统方式:反转了资源的获取方向—-改由容器主动的将资源推送给需要的组件,开发人员不需要知道容器是如何创建资源对象的,只需要提供接收资源的方式即可,极大的降低了学习成本,提高了开发的效率。这种行为也称为查找的被动形式。
控制:资源获取方式
主动式:(要什么资源自给new)
1
2
3
4BookServlet{
BookService bs = new BookService()
AirPlane ap = new AirPlane(); //复杂对象的创建是一个比较庞大的工程
}被动式:资源的获取不是我们自己创建,而是交给组件创建
1
2
3
4
5
6BookServlet{
BookService bs;
public void test01(){
bs.checkout();
}
}容器: 管理所有组件(有功能的类),假设,BookSevlet受容器管理,BookService也受容器管理;容器可以自动的探查除那些组件(类)需要用到另一些组件(类),容器帮我们创建BookService对象,并把BookService对象赋值过去
主动的new资源变为被动的接受资源
IOC是一种思想,DI是一种实现
DI:(Dependency injection) 依赖注入
IOC的另一种表述方式:即组件以一些预先定义好的方式(例如:setter 方法)接受来自于容器的资源注入。相对于IOC而言,这种表述更直接
容器能知道那个组件(类)运行的时候,需要另外一个类(组件);容器通过反射的形式,容器通过反射的形式,将容器中准备的BookSevice对象注入(利用反射给属性赋值)到BookServlet中
只要是容器管理的组件,都能使用容器提供的强大功能
HelloWorld 实现
IOC在Spring中的实现
- 在通过IOC容器读取Bean的实例之前,需要先将IOC容器本身实例化。
- Spring提供了IOC容器的两种实现方式
(1)BeanFactory:IOC容器的基本实现,是Spring内部的基础设施,是面向Spring本身的,不是提供给开发人员使用的。
(2)ApplicationContext:BeanFactory的子接口,提供了更多高级特性。面向Spring的使用者,几乎所有场合都使用ApplicationContext而不是底层的BeanFactory。ApplicationContext的主要实现类
- ClassPathXmlApplicationContext:对应类路径下的XML格式的配置文件
- FileSystemXmlApplicationContext:对应文件系统中的XML格式的配置文件
- 在初始化时就创建单例的bean,也可以通过配置的方式指定创建的Bean是多实例的。
其他
ConfigurableApplicationContext
- 是ApplicationContext的子接口,包含一些扩展方法
- refresh()和close()让ApplicationContext具有启动、关闭和刷新上下文的能力。
WebApplicationContext
>专门为WEB应用而准备的,它允许从相对于WEB根目录的路径中完成初始化工作