韩顺平spring笔记

上传人:第*** 文档编号:32828442 上传时间:2018-02-12 格式:DOC 页数:15 大小:241.97KB
返回 下载 相关 举报
韩顺平spring笔记_第1页
第1页 / 共15页
韩顺平spring笔记_第2页
第2页 / 共15页
韩顺平spring笔记_第3页
第3页 / 共15页
韩顺平spring笔记_第4页
第4页 / 共15页
韩顺平spring笔记_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《韩顺平spring笔记》由会员分享,可在线阅读,更多相关《韩顺平spring笔记(15页珍藏版)》请在金锄头文库上搜索。

1、 spring 的快速入门案例 spring 是什么?struts 是 web 框架 (jsp/action/actionfrom)hibernate 是 orm 框架,处于持久层.spring 是容器框架,用于配置 bean,并维护 bean 之间关系的框架 spring 中有一个非常概念: bean (是 java 中的任何一种对象 javabean/service/action/数据源./dao, ioc(控制反转 inverse of control) di( dependency injection 依赖注入) 画一个框架图 快速入门开发一个 spring 项目.1. 引入 spri

2、ng 的开发包(最小配置 spring.jar 该包把常用的 jar 都包括, 还要 写日志包 common-logging.jar2. 创建 spring 的一个核心文件 applicationContext.xml, hibernate 有核心 hibernate.cfg.xml struts 核心文件 struts-config.xml, 该文件一般放在 src 目录下,该文件中引入 xsd 文件 :可以从给出的案例中拷贝一份.3. 配置 bean韩顺平4. 在 Test.java 中,我们怎么使用/我们现在使用 spring 来完成上面的任务/1.得到 spring 的 applica

3、tionContext 对象( 容器对象)ApplicationContext ac=new ClassPathXmlApplicationContext(applicationContext.xml);UserService us=(UserService) ac.getBean(userService);us.sayHello();5. 细节讨论?传统的方法和使用 spring 的方法5.1 使用 spring ,没有 new 对象,我们把创建对象的任务交给 spring 框架5.2 spring 的运行原理图:5.3 我们再看 spring 对上面案例总结:spring 实际上是一个容器

4、框架,可以配置各种 bean(action/service/domain/dao),并且可以维护bean 与 bean 的关系,当我们需要使用某个 bean 的时候,我们可以 getBean(id),使用即可.ioc 是什么?答 :ioc(inverse of controll ) 控制反转: 所谓控制反转就是把创建对象(bean),和维护对象(bean)的关系的权利从程序中转移到 spring 的容器(applicationContext.xml), 而程序本身不再维护.DI 是什么 ?答: di(dependency injection) 依赖注入 : 实际上 di 和 ioc 是同一个概

5、念,spring 设计者认为 di更准确表示 spring 核心技术 学习框架,最重要的就是学习各个配置.把 Applicationcontext 做成一个单例的.上机练习: 把我写的代码走一遍 . spring 开发提倡接口编程,配合 di 技术可以层与层的解耦举例说明:现在我们体验一下 spring 的 di 配合接口编程的,完成一个字母大小写转换的案例:思路:1. 创建一个接口 ChangeLetter2. 两个类实现接口3. 把对象配置到 spring 容器中4. 使用通过上面的案例,我们可以初步体会到 di 配合接口编程,的确可以减少层(web 层) 和 业务层的耦合度.思考题:接口

6、ValidateUser有一个方法:check(?)有两个类CheckUser1 implements ValidateUsercheck/ 安装 xml 验证CheckUser2 implements VallidateUsercheck()/ 到数据库去验证 从 ApplicationContex 应用上下文容器中获取 bean 和从 bean 工厂容器中获取 bean具体案例:/从 ApplicationContext 中取 beanApplicationContext ac=new ClassPathXmlApplicationContext(com/hsp/ioc/beans.xml

7、);/当我们去实例化 beans.xml,该文件中配置的 bean 被实例(该 bean scope 是 singleton)从bean 中取出 student/如果我们使用 beanfactory 去获取 bean,当你只是实例化该容器, 那么/容器的 bean 不被实例化,只有当你去使用 getBean 某个 bean 时,才会实时的创建.BeanFactory factory = new XmlBeanFactory(new ClassPathResource(com/hsp/ioc/beans.xml);factory.getBean(student);结论: 1.如果使用 Appli

8、cationContext ,则配置的 bean 如果是 singlton 不管你用不用,都被实例化.(好处就是可以预先加载,缺点就是耗内存 )2.如果是 BeanFactory ,则当你获取 beanfacotry 时候,配置的 bean 不会被马上实例化,当你使用的时候,才被实例(好处节约内存 ,缺点就是速度)3.规定: 一般没有特殊要求,应当使用 ApplicatioContext 完成(90%) bean 的 scope 的细节入门案例:/获取两个 studentStudent s1=(Student) ac.getBean(student);Student s2=(Student)

9、ac.getBean(student);System.out.println(s1+ +s2); request session global-session 是在 web 开发中才有意义. 三种获取 ApplicationContext 对象引用的方法1. ClassPathXmlApplicationContext - 通过类路径2. FileSystemXmlApplicationContext - 通过文件路径举例:ApplicationContext ac=new FileSystemXmlApplicationContext(文件路径 beans.xml / application

10、Context.xml);3. XmlWebApplicationContext bean 的生命周期为什么总是一个生命周期当做一个重点?Servlet - servlet 生命周期 init() destory()java 对象生命周期.往往笔试,面试总喜欢问生命周期的问题 实例化(当我们的程序加载 beans.xml 文件),把我们的 bean(前提是 scope=singleton)实例化到内存 调用 set 方法设置属性 如果你实现了 bean 名字关注接口(BeanNameAware) 则,可以通过 setBeanName 获取 id号 如果你实现了 bean 工厂关注接口,(Bea

11、nFactoryAware), 则可以获取 BeanFactory 如果你实现了 ApplicationContextAware 接口,则调用方法 /该方法传递 ApplicationContextpublic void setApplicationContext(ApplicationContext arg0)throws BeansException / TODO Auto-generated method stubSystem.out.println(setApplicationContext+arg0); 如果 bean 和 一个后置处理器关联,则会自动去调用 Object postP

12、rocessBeforeInitialization 方法 如果你实现 InitializingBean 接口,则会调用 afterPropertiesSet 如果自己在 则可以在 bean 定义自己的初始化方法. 如果 bean 和 一个后置处理器关联,则会自动去调用 Object postProcessAfterInitialization方法 使用我们的 bean11. 容器关闭12. 可以通过实现 DisposableBean 接口来调用方法 destory13. 可以在 调用定制的销毁方法小结: 我们实际开发中往往,没有用的这么的过程 ,常见的是:1-2-6-10-9-11 上机练习

13、: 把使用每个 bean 的时间记录到一个 recoder.txt 文件 ,内容是xxbean. 使用时间是 : 1999-11-11 11:11:11问题:通过 BeanFactory 来获取 bean 对象,bean 的生命周期是否和 Applicationcontext 是一样吗?不是一样的,bean 是工厂中创建的生命周期会简单一些: 配置 bean 的细节 scope 的说明: 尽量使用 scope=”singleton” ,不要使用 prototype,因为这样对我们的性能影响较大. 如何给集合类型注入值.java 中主要的集合有几种: map set list / 数组 Depa

14、rtment 类:package com.hsp.collection;import java.util.List;import java.util.Map;import java.util.Set;public class Department private String name;private String empName;private List empList;private Set empsets;private Map empMaps;public Set getEmpsets() return empsets;public void setEmpsets(Set empset

15、s) this.empsets = empsets;public String getEmpName() return empName;public void setEmpName(String empName) this.empName = empName;public String getName() return name;public void setName(String name) this.name = name;public List getEmpList() return empList;public void setEmpList(List empList) this.em

16、pList = empList;public Map getEmpMaps() return empMaps;public void setEmpMaps(Map empMaps) this.empMaps = empMaps;/Employeel 类 package com.hsp.collection;public class Employee private String name;private int id;public int getId() return id;public void setId(int id) this.id = id;public String getName() return name;public void setName(String

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 工程造价

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号