一、初识Spring
Spring框架主要由7大模块组,
**核心模块
Spring Core 模块是Spring的核心容器,它实现了Ioc模式,提供了Spring框架的基础功能。模块中包含的BeanFactory类是Spring的核心类,负责对JavaBean的配置与管理。它采用Factory模式实现了Ioc容器即依赖注入。
**Context模块
Spring Context模块继承BeanFactory(或者说Spring核心)类,并且添加了事件处理、国际化、资源装载、透明装载及数据校验等功能。它还提供了框架式的Bean的访问和很多企业级的功能,如JNDI访问、支持EJB、远程调用、集成模板框架、Email和定时任务调度等。
**AOP模块
Spring集成了所有AOP功能。通过事务管理可以使任意Spring管理的对象AOP化。Spring提供了用标准Java语言编写的AOP框架,它的大部分内容都是根据AOP联盟的API开发。它使应用程序抛开EJB的复杂性,但拥有传统EJB的关键功能。
**DAO模块
DAO模块提供了JDBC的抽象层,简化了数据厂商的异常错误(不再从SQLException继承大批代码),大幅度减少代码的编写,并且提供了对声明式事务和编程式事务的支持
**O/R映射模块
Spring ORM模块提供了对现有ORM框架支持,各种流行的ORM框架已经做得非常成熟,并且拥有大规模的市场(如Hibernate)。Spring没有必要开发新的ORM工具,介是它对Hibernate提供了完美的整合功能,同时支持其它的ORM工具
**Web 模块
Spring web 模块建立在Spring Context基础之上,它提供了Servlet监听器的Context和web应用的上下文。它对现有的Web框架如JSF、Tapestry、Struts等提供了集成。
**MVC模块
Spring web MVC 模块建立在Spring核心功能之上,这使用它能够拥有Spring的所有特性,能够适应多视图、模板技术、国际化和验证服务,实现控制逻辑和业务清晰的分离。
二、Spring获取
三、简单配置Spring
spring.jar---------整个Spring模块,包含表中所有JAR的功能
spring-core.jar-----Springr的核心模块,包含IoC容器
spring-aop.jar------Spring的AOP模块
spring-context.jar---Srping的上下文,包含ApplicationContext容器
spring-dao.jar -----Spring的DAO模块,包含对DAO与JDBC的支持
spring-orm.jar-----Srping的ORM模块,支持Hibernate,JDO等ORM工具
spring-web.jar------Spring的web模块,包含Web application context
spring-webmvc.jar----Spring的MVC框架模块
三、使用BeanFactory管理Bean
BeanFactory采用Java经典的工厂模式,通过从XML配置文件或属性文件中读取JavaBean的定义,来实现JavaBean的创建,配置和管理。BeanFactory有很多实现,其中XmlBeanFactory可以通过流行的XML文件格式读取配置信息来装载JavaBean。BeanFactory在Spring中的作用如
Resource resource = new ClassPathResource("applicationContext.xml");
BeanFactory factory = new XmlBeanFactory(name);
Test test = (Test) factory.getBean("test");
BeanFactory 在调用getBean()方法之前不会实例化任何对象,只有地需要创建JavaBean的实例对象时,才会为其分配资源空间
四、ApplicationContext的应用
BeanFactroy实现了IoC控制,所以它可以称为“IoC容器”,而ApplicationContext扩展了BeanFactory容器并添加了对I18N、生命周期事件的发布监听等更加强大的功能,使之成为Spring中强大的企业级IoC容器,这个容器中提供了对其他框架和EJB的集成、远程调用、WebService、任务调度和JNDI等企业服务。在Spring应用中大多采用ApplicationContext容器来开发企业级的程序
ApplicationContext接口有3个实现类,可以实例化其中任何一个类来创建Spring的ApplicatonContext容器。
**ClassPathXmlApplicationContext类
ClassPathXmlAppplicationContext,它从当从类路径中检索配置文件并装配它来创建容器的实例。
ApplicationContext context = ClassPathXmlApplicatoncontext(Stirng configLocation);
其中的configLocation参数指定了Spring配置文件的名称和位置
**FileSystemXmlApplicationContext类
FileSystemXmlApplicationContext,它和ClassPathXmlApplicatonContenxt类的区别在于读取Spring配置文件的方式,它不再从类路径中获取配置文件,而是通过参数指定配置文件的位置可以获取路径之外的资源
ApplicatonContext context = new FileSystemXmlApplicationContext(Stirng configLocation);
**WebApplicationContext类
WebApplicationContext是Spring的Web应用容器,有两种方法可以在Servlet中使用WebApplicationContext。第一种方法是在Serlvet的web.xml文件中配置Spring的ContextLoaderListener监听器。第二种方法同样要修改web.xml配置文件,在配置文件中添加一个Servlet,定义使用Spring的org.springframework.web.ContextLoaderServlet类