Spring概述:
1、为企业应用程序的开发提供了轻量级的解决方案。
2、Spring为表现层,业务逻辑层,和数据的持久化层提供了很好的解决方案
3、Spring支持对java普通对象的管理。
Spring体系结构
1、Spring Core:Spring的核心基础,管理Bean与Bean之间的依赖。
2、Spring Web :提供Web应用开发的支持。
3、Spring DAO:支持包括一致的异常处理和编程方式。
4、Spring Context:BeanFactory功能加强的一个子接口。
5、Spring MVC:针对Web应用的MVC思想实现。
6、Spring ORM:用于与流行的ORM框架的整合。
7、Spring AOP:提供与AOP(面向切面编程)联盟兼容的编程实现。AOP起源于OOP(面向对象编程)
Spring的设计理念
Spring的总体构架:
Spring的特性组件:web 、jdbc、。。。。等上层组件
Spring的核心组件:Context、Core、Beans。Beans是核心中的核心,实际上Spring是面向Bean的编程。
Spring中设计模式分析
工厂模式:Spring容器就是实例化和管理全部Bean的工厂
单态模式:Spring默认将所有的Bean设置成单例模式,即对所有相同Id的Bean的请求,都将返回同一个共享Bean实例。
单例模式回顾:
单例模式限制的类实例的创建。采用这种模式设计的类,可以保证仅有一个实例,并提供访问该实例的全局访问点。
工厂模式回顾:
工厂模式根据调用数据返回某个类的一个实例,此类可能是多个类的某一个类。
Spring入门应用:
1、下载Spring包:官网:www.SpringSource.org
Spring包的文件夹介绍:dist:存放Spring的jar包,通常我们只需要其中的Spring.jar
docs:Spring的相关文档,包括开发指南,API帮助文档等
lib:包含Spring编译和运行所依赖的第三方类库,该路径下的类库不是Spring所必需的。
samples:包含几个Spring几个简单的示例。
src:Spring的全部源文件
2、Spring在项目中的部署
1、创建项目并且添加Spring所需要的jar包:Spring.jar log4j-1-??.jar(日志输出)、jakarta-commons下的jar(第三方常用jar)
2、创建log4j.properties文件,并配置。用来控制日志输出。
log4j的三个主要组件:logger(记录器)、layout(布局)、appender(输出目的地)
3、编写程序的主体代码:例:
package spring; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class HelloSpring { //属性名与bean中的property name对应 private String who; private String career; public void print() { System.out.println("Hello!" + who + career); } public String getWho() { return who; } public void setWho(String who) { this.who = who; } public String getCareer() { return career; } public void setCareer(String career) { this.career = career; } public static void main(String[] args) { //实例化Spring的容器 ApplicationContext ac = new ClassPathXmlApplicationContext( "applicationContext.xml"); //通过特定name获取与之对应的bean HelloSpring hs = (HelloSpring) ac.getBean("name"); hs.print(); } }
4、编写Spring配置文件:ApplicationContext.xml :例
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> <!-- 使用Bean元素创建Bean实例 --> <!-- id属性表示定义bean实例的名称,class属性表面bean的类型 --> <bean id="name" class="spring.HelloSpring"> <!-- 对应bean类的属性 --> <property name="who"> <!-- 为属性注入值 --> <value>林冲</value> </property> <property name="career" > <value>军人</value> </property> </bean> </beans>
Spring对单态和工厂模式的实现:
1、Spring对工厂模式的实现:
1、Spring配置文件:Spring通过配置文件管理所有的Bean,这些Bean就是Spring工厂能生产的实例。
2、实例化Spring容器,即ApplicationContext,由该容器替代工厂类创建实例:容器的getBean(参数)方法返回一个实例。
2、Spring对单态模式的实现:
1、Spring的上下文,也就是生产Bean实例的工厂已经默认被设计成单例模式。
Spring实现的工厂模式不仅提供创建Bean实例的功能,还提供了对Bean的生命周期的管理。还可以管理Bean与Bean之间的依赖关系,以及Bean的属性值。
Spring的核心机制:控制反转和依赖注入
1、控制反转和依赖注入:
当某个角色需要另一个角色的协助的时候,在传统的程序设计过程中,通常由调用者来创建被调用者的实例。但在Spring中,创建被调用者的工作不再由调用者来完成因此被称为控制反 转;创建被调用者通常由Spring来完成,然后注入调用者,因此也被称为依赖注入。
2、依赖
两个元素中,一个元素定义发生改变则会引起另一个元素发生变化,则称这2个元素间存在依赖关系。
例如:一个类要发送消息给另外一个类;一个类将另一个类作为数据的一部份;一个类操作另一个类作为其参数等这些情况都是一个类依赖另一个类。
Spring的核心概念:面向方面编程(Aspect Oriented Programming)
1、AOP与OOP的关系:AOP不会取代OOP,AOP是OOP的补充。AOP从动态的角度考虑程序结构,从而使OOP更加完善。OOP将程序分解成各个层次的对象,而SOP将程序运行过程分解成各个切面。