收藏 分享(赏)

第8讲-spring基本用法.ppt

上传人:无敌 文档编号:84640 上传时间:2018-03-11 格式:PPT 页数:56 大小:1.88MB
下载 相关 举报
第8讲-spring基本用法.ppt_第1页
第1页 / 共56页
第8讲-spring基本用法.ppt_第2页
第2页 / 共56页
第8讲-spring基本用法.ppt_第3页
第3页 / 共56页
第8讲-spring基本用法.ppt_第4页
第4页 / 共56页
第8讲-spring基本用法.ppt_第5页
第5页 / 共56页
点击查看更多>>
资源描述

1、Spring的基本用法,目 录,1 Spring简介2 Spring的下载和安装3 Spring的依赖注入4 使用Spring容器5 Spring容器中的Bean6 容器中Bean的生命周期7 本章小结,Spring简介,Spring框架由Rod Johnson开发,2003年发布了第一个版本,目前已发展成为Java EE开发中最重要的框架之一。Spring为企业应用提供了一个轻量级的解决方案,内容包括:基于依赖注入的核心机制基于AOP的声明式事务管理与多种持久层技术的整合优秀的Web MVC框架等等,Spring的组成结构图,Spring的组成结构图详解,核心容器:核心容器提供 Spring

2、 框架的基本功能。核心容器的主要组件是 BeanFactory,它是工厂模式的实现。BeanFactory 使用控制反转 (IOC)模式将应用程序的配置和依赖性规范与实际的应用程序代码分开。 Spring 上下文:Spring 上下文是一个配置文件,向 Spring 框架提供上下文信息。Spring 上下文包括企业服务,例如 JNDI、EJB、电子邮件、国际化、校验和调度功能。 Spring AOP:通过配置管理特性,Spring AOP 模块直接将面向方面的编程功能集成到了 Spring 框架中。所以,可以很容易地使 Spring 框架管理的任何对象支持 AOP。Spring AOP 模块为

3、基于 Spring 的应用程序中的对象提供了事务管理服务。通过使用 Spring AOP,不用依赖 EJB 组件,就可以将声明性事务管理集成到应用程序中。 Spring DAO:JDBC DAO 抽象层提供了有意义的异常层次结构,可用该结构来管理异常处理和不同数据库供应商抛出的错误消息。异常层次结构简化了错误处理,并且极大地降低了需要编写的异常代码数量(例如打开和关闭连接)。Spring DAO 的面向 JDBC 的异常遵从通用的 DAO 异常层次结构。 Spring ORM:Spring 框架插入了若干个 ORM 框架,从而提供了 ORM 的对象关系工具,其中包括 JDO、Hibernate

4、 和 iBatis SQL Map。所有这些都遵从 Spring 的通用事务和 DAO 异常层次结构。 Spring Web 模块:Web 上下文模块建立在应用程序上下文模块之上,为基于 Web 的应用程序提供了上下文。所以,Spring 框架支持与 Jakarta Struts 的集成。Web 模块还简化了处理多部分请求以及将请求参数绑定到域对象的工作。 Spring MVC 框架:MVC 框架是一个全功能的构建 Web 应用程序的 MVC 实现。通过策略接口,MVC 框架变成为高度可配置的,MVC 容纳了大量视图技术,其中包括 JSP、Velocity、Tiles、iText 和 POI。

5、,Spring的优点,低侵入式设计,代码的污染极低。独立于各种应用服务器。Spring的DI容器降低了业务对象替换的复杂性,提高了组件之间的解耦。Spring的AOP支持通用任务的集中式管理。Spring的ORM和DAO提供了与第三方持久层框架的良好整合,并简化了底层数据库访问。Spring的开放性好,开发者可自由选用Spring框架的部分或全部。,Spring的缺点,中断了应用程序的逻辑,使代码变得不直观;把逻辑处理由代码化变为配置化,增加了出错的概率,也使后期的维护难度增加;调试不方便。,目 录,1 Spring简介2 Spring的下载和安装3 Spring的依赖注入4 使用Spring

6、容器5 Spring容器中的Bean6 容器中Bean的生命周期7 本章小结,下载Spring,Spring官方网站: http:/www.springsource.org/,下载Spring,下载Spring,Spring3.0.5的jar包,如何使用Spring,对于Java SE项目,只需在项目的classpath中增加相应的Spring jar包即可。对于Web项目,只需要如下两个步骤拷贝所有jar包到web项目的WEB-INF/lib下将所需的第三方类库文件复制到Web项目的WEB-INF/lib下,目 录,1 Spring简介2 Spring的下载和安装3 Spring的依赖注入4

7、 使用Spring容器5 Spring容器中的Bean6 容器中Bean的生命周期7 本章小结,Spring中的IoC,IoC:Inverse Of ControlDI:Dependcy InjectionIoC和DI的含义是相同的IoC的含义:不创建对象,但是描述创建它们的方式。在代码中不直接与对象和服务连接,但在配置文件中描述哪一个组件需要哪一项服务。容器 (在 Spring 框架中是 IoC 容器) 负责将这些联系在一起。IoC是Spring的核心和基础,Spring中的IoC,IoC,即控制反转,有时候也叫做DI(依赖注入)IoC实现的基础是工厂模式,所使用的技术主要是java的反射技

8、术。SimpleFactory模式:应用和具体的实体类分离、解耦;,简单工厂模式的实例,public class Creatorpublic static Product createProduct(String str)if(A.equals(str)return new ConcreteProductA();else if(B.equals(str)return new ConcreteProductB();elsereturn null;,简单工厂模式的实例,public class Clientpublic static void main(String args)Product pr

9、oductA = Creator.createProduct(A);System.out.println(productA.getClass().getName();Product productB = Creator.createProduct(B);System.out.println(productB.getClass().getName();,工厂模式在Spring中的应用,实例演示。person(interface)-personAperson(interface)-personB用简单工厂模式如何来做?,以前的做法,PersonA A = new PersonA();System.

10、out.println(A.sayHello(你好);PersonB B = new PersonB();System.out.println(B.sayHello(你好);,Spring的做法(配置文件),Spring的做法(具体代码),ClassPathResource cpr = new ClassPathResource(applicationContext.xml);XmlBeanFactory factory = new XmlBeanFactory(cpr);PersonA A = (PersonA)factory.getBean(a);System.out.println(A.

11、sayHello(“你好);PersonB B = (PersonB)factory.getBean(b);System.out.println(B.sayHello(“你好);,稍复杂的IoC实例,ApplicationContext ctx = new FileSystemXmlApplicationContext(applicationContext.xml);Person p = (Person) ctx.getBean(chinese);p.useAxe();,稍复杂的IoC实例,程序结构示意图,对象之间存在主要依赖关系,查看对象之间的依赖关系(示意图),小技巧,光标选中接口,【Ct

12、rl+t】进入接口的实现方法。,Spring类图,IoC和反射,IoC详细介绍,Java反射机制,IoC的实现原理是Java反射机制,Spring的底层实现(尤其是IoC)使用了大量的Java反射,Java发射机制的学习及了解有助于对Spring的深层次理解。Java反射的包是java.lang.reflect,主要包含Class、Field、Method、Constrator等类,提供一种运行时获取和改变对象状态及属性的相关API;下面让我们简单了解一下Java的反射机制,JAVA反射机制提供的功能,在运行时判断任意一个对象所属的类 在运行时构造任意一个类的对象 在运行时判段任意一个类所具有

13、的成员变量和方法 在运行时调用任一个对象的方法 在运行时创建新类对象 以下通过实例演示来了解Java反射机制,Java反射实例1,public static void main(String args) throws Exception / 加载并初始化命令行参数所指定的类Class classType = Class.forName(args0);/获取到该类所对应的所有方法Method method = classType.getDeclaredMethods();/打印出类的所有方法for(Method m:method)System.out.println(m.toString();,

14、运行时传入参数,运行结果,Java的反射实例2,public class test private String str = dps;public String getStr() return str;,Java的反射实例2,test myTest = new test();System.out.println(myTest.getStr();Class clazz = test.class;Field field = clazz.getDeclaredField(str);field.setAccessible(true);field.set(myTest, “change”);System

15、.out.println(myTest.getStr();,运行结果,改变自己,从改变习惯开始,随心所欲,而不随波逐流,依赖注入的方式,设值注入IoC容器使用属性的setter方法来注入被依赖的实例实际操作演示构造注入IoC容器使用构造器来注入被依赖的实例实际操作演示两种注入方式的对比根据不同的需求选用,目 录,1 Spring简介2 Spring的下载和安装3 Spring的依赖注入4 使用Spring容器5 Spring容器中的Bean6 容器中Bean的生命周期7 本章小结,Spring容器简介,Spring容器是生成Bean实例的工厂,并管理容器中的BeanBeanFactory接口和

16、ApplicationContext接口都可以代表Spring容器ApplicationContext是BeanFactory的子接口通常使用ApplicationContext代表容器,Spring容器简介,ApplicationContext接口的常用实现类FileSystemXMlApplicationClassPathXmlApplicationXmlWebApplicationAnnotationConfigWebApplication,Spring容器简介,ApplicationContext的增强功能提供国际化支持资源访问事件机制载人多个配置文件以声明式的方式启动、创建Sprin

17、g容器,目 录,1 Spring简介2 Spring的下载和安装3 Spring的依赖注入4 使用Spring容器5 Spring容器中的Bean6 容器中Bean的生命周期7 本章小结,Bean定义,通常需要制定两个属性:id:确定该Bean的唯一性标识class:指定该Bean的具体实现类可以给Bean定义别名,容器中Bean的作用域,singleton:在spring IOC容器中仅存在一个Bean实例,Bean以单实例的方式存在。默认方式。prototype :每次从容器中调用Bean时,都返回一个新的实例,即每次调用getBean()时,相当于执行new XxxBean()的操作。r

18、equest :每次HTTP请求都会创建一个新的Bean,该作用域仅适用于webApplicationContext环境。session: 同一个HTTP session共享一个Bean,不同HTTP session使用不同的Bean,该作用域仅适用于webApplicationContext环境。globalSession:同一个全局session共享一个Bean,一般用于portlet应用环境,该作用域仅适用于webApplicationContext环境.,注入普通属性值,目标类型:基本类型示例代码,自动装配(自动注入属性值),Spring能根据某种跪着,自动装配Bean与Bean之间的

19、依赖关系。简化了代码,但是降低了依赖关系的透明度和清晰性autowire属性的设置nobyNamebyTypeconstructorautodetect,注入集合类型的值,如果Bean的属性是个集合,也可以完成相应值的注入不同集合类型的注入方式:List:Set:Map:Properties:,注入集合类型的值(示例),张1张2张3王1王2, 10 60 70,目 录,1 Spring简介2 Spring的下载和安装3 Spring的依赖注入4 使用Spring容器5 Spring容器中的Bean6 容器中Bean的生命周期7 本章小结,容器中Bean的生命周期,容器中Bean的生命周期,1

20、调用Bean的构造函数(或者工厂方法)实例化Bean.2 对Bean的成员变量赋值.3 如果Bean实现了BeanNameAware,调用Bean的setBeanName方法.4 如果Bean实现了BeanFactoryAware,调用Bean的setBeanFactory方法.5 如果Bean实现了ApplicationContextAware,调用Bean的setApplicationContext方法.6 如果容器中配置了BeanPostProcessor,调用BeanPostProcessor的postProcessBeforeInitialization方法(如果有多个BeanPos

21、tProcessor,调用每一个BeanPostProcessor的postProcessBeforeInitialization方法).6 如果Bean实现了InitializingBean,调用Bean的afterPropertiesSet方法.7 如果Bean配置了init-method方法,调用init-method配置的Bean方法.8 如果容器中配置了BeanPostProcessor,调用BeanPostProcessor的postProcessAfterInitialization方法.(如果有多个BeanPostProcessor,调用每一个BeanPostProcessor

22、的postProcessAfterInitialization方法).9 Bean处于可以使用的状态.10 Spring容器关闭.11 如果Bean实现了DisposableBean,调用Bean的destroy方法.12 如果Bean配置了destroy-method方法,调用destroy-method配置的Bean的方法.,容器中Bean的生命周期,实际操作演示,目 录,1 Spring简介2 Spring的下载和安装3 Spring的依赖注入4 使用Spring容器5 Spring容器中的Bean6 容器中Bean的生命周期7 本章小结,本讲小结,本讲学习了Spring的基础知识多利用网络资源多动手实践,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报