传智播客spring黎活明知识讲解

上传人:yuzo****123 文档编号:137743877 上传时间:2020-07-11 格式:PPT 页数:67 大小:479KB
返回 下载 相关 举报
传智播客spring黎活明知识讲解_第1页
第1页 / 共67页
传智播客spring黎活明知识讲解_第2页
第2页 / 共67页
传智播客spring黎活明知识讲解_第3页
第3页 / 共67页
传智播客spring黎活明知识讲解_第4页
第4页 / 共67页
传智播客spring黎活明知识讲解_第5页
第5页 / 共67页
点击查看更多>>
资源描述

《传智播客spring黎活明知识讲解》由会员分享,可在线阅读,更多相关《传智播客spring黎活明知识讲解(67页珍藏版)》请在金锄头文库上搜索。

1、北京传智播客教育 ,Spring企业开发,讲师:黎活明,北京传智播客教育 ,Spring是什么,Spring是一个开源的控制反转(Inversion of Control ,IoC)和面向切面(AOP)的容器框架.它的主要目得是简化企业开发.,北京传智播客教育 ,IOC 控制反转,public class PersonServiceBean private PersonDao personDao = new PersonDaoBean(); public void save(Person person) personDao.save(person); PersonDaoBean 是在应用内部创

2、建及维护的。所谓控制反转就是应用本身不负责依赖对象的创建及维护,依赖对象的创建及维护是由外部容器负责的。这样控制权就由应用转移到了外部容器,控制权的转移就是所谓反转。,北京传智播客教育 ,依赖注入(Dependency Injection),当我们把依赖对象交给外部容器负责创建,那么PersonServiceBean 类可以改成如下: public class PersonServiceBean private PersonDao personDao ; /通过构造器参数,让容器把创建好的依赖对象注入进PersonServiceBean,当然也可以使用setter方法进行注入。 public

3、PersonServiceBean(PersonDao personDao) this.personDao=personDao; public void save(Person person) personDao.save(person); 所谓依赖注入就是指:在运行期,由外部容器动态地将依赖对象注入到组件中。,北京传智播客教育 ,使用Spring的好处,当使用spring时,我们可以使用容器提供的众多服务,北京传智播客教育 ,如果使用Spring, 我们就不再需要手工控制事务,Hibernate的事务操作: public void save() Session session = sessi

4、onFactory.getCurrentSession(); session.beginTransaction(); Info info = new Info(传智播客); info.setContent(国内实力最强的java培训机构); session.save(info ); session.getTransaction().commit(); JDBC的事务操作: Connection conn = null; try . conn.setAutoCommit(false); Statement stmt = conn.createStatement(); stmt.executeUp

5、date(update person where name=叶天); mit(); . catch (Exception e) conn.rollback(); finallyconn.close();,北京传智播客教育 ,另外,如果使用spring, 我们也不需要处理复杂的事务传播行为,public void payment() Bean1.update();/更新金额 Bean2.save();/记录操作日志 如果我们不使用Spring,针对下面这两种业务需求,我们该如何做? 第1种可能的业务需求:要求Bean1.update()和Bean2.save()在同一个事务中执行。 第2种可能的

6、业务需求:要求不管Bean1.update() 的事务是否成功,都需要记录操作日志。 public class Bean1 public void update()/注意:下面省略了一些代码 Connection conn = null; conn.setAutoCommit(false); Statement.executeUpdate(“update account set amount=? where id=?); public class Bean2 public void save()/注意:下面省略了一些代码 Connection conn = null; conn.setAuto

7、Commit(false); Statement.executeUpdate(“insert into Log (content) values (?); ,北京传智播客教育 ,使用Spring,不再需要我们处理复杂的事务传播行为,使用Spring,我们只需要通过声明式的事务属性配置就可以轻松地实现这两种业务需求 1.要求Bean1.update()和Bean2.save()的在同一个事务中执行 2.要求不管Bean1.update() 的事务是否成功,都需要记录日志。 Transactional(propagation=Propagation.Required) public void pa

8、yment() Bean1.update();/更新金额 Bean2.save();/记录日志 public class Bean1 Transactional(propagation=Propagation.Required) public void update() executeUpdate(“update account set amount=? where id=?); public class Bean2 Transactional(propagation=Propagation.RequiresNew) public void save() executeUpdate(“inse

9、rt into Log (content) values (?); ,北京传智播客教育 ,轻量级与重量级概念的划分,经常会有同学问到spring属于轻量级框架,还是重量框架?其实划分一个应用是否属于轻量级还是重量级,主要看它使用了多少服务.使用的服务越多,容器要为普通java对象做的工作就越多,必然会影响到应用的发布时间或者是运行性能. 对于spring容器,它提供了很多服务,但这些服务并不是默认为应用打开的,应用需要某种服务,还需要指明使用该服务,如果应用使用的服务很少,如:只使用了spring核心服务,那么我们可以认为此时应用属于轻量级的,如果应用使用了spring提供的大部分服务,这时应

10、用就属于重量级。目前EJB容器就因为它默认为应用提供了EJB规范中所有的功能,所以它属于重量级。,北京传智播客教育 ,使用Spring需要的jar,到http:/www.springsource.org/download下载spring,然后进行解压缩,在解压目录中找到下面jar文件,拷贝到类路径下 distspring.jar libjakarta-commonscommons-logging.jar 如果使用了切面编程(AOP),还需要下列jar文件 lib/aspectj/aspectjweaver.jar和aspectjrt.jar lib/cglib/cglib-nodep-2.1_

11、3.jar 如果使用了JSR-250中的注解,如Resource/PostConstruct/PreDestroy,还需要下列jar文件 libj2eecommon-annotations.jar,北京传智播客教育 ,spring的配置文件模版, . 该配置模版可以从spring的参考手册或spring的例子中得到。配置文件的取名可以任意,文件可以存放在任何目录下,但考虑到通用性,一般放在类路径下。,北京传智播客教育 ,编写spring配置文件时,不能出现帮助信息,由于spring的schema文件位于网络上,如果机器不能连接到网络,那么在编写配置信息时候就无法出现提示信息,解决方法有两种:

12、1。让机器上网,eclipse会自动从网络上下载schema文件并缓存在硬盘上。 2。手动添加schema文件,方法如下: windwos-preferences-myeclipse-files and editors-xml-xmlcatalog 点add,在出现的窗口中的Key Type中选择URI,在location中选File system,然后在spring解压目录的dist/resources目录中选择spring-beans-2.5.xsd,回到设置窗口的时候不要急着关闭窗口,应把窗口中的Key Type改为Schema location,Key改为http:/www.sprin

13、gframework.org/schema/beans/spring-beans-2.5.xsd,北京传智播客教育 ,实例化spring容器,实例化Spring容器常用的两种方式: 方法一: 在类路径下寻找配置文件来实例化容器 ApplicationContext ctx = new ClassPathXmlApplicationContext(new Stringbeans.xml); 方法二: 在文件系统路径下寻找配置文件来实例化容器 ApplicationContext ctx = new FileSystemXmlApplicationContext(new String“d:bean

14、s.xml“); Spring的配置文件可以指定多个,可以通过String数组传入。,北京传智播客教育 ,从spring容器中得到bean,当spring容器启动后,因为spring容器可以管理bean对象的创建,销毁等生命周期,所以我们只需从容器直接获取Bean对象就行,而不用编写一句代码来创建bean对象。从容器获取bean对象的代码如下: ApplicationContext ctx = new ClassPathXmlApplicationContext(“beans.xml”); OrderService service = (OrderService)ctx.getBean(per

15、sonService);,北京传智播客教育 ,使用dom4j读取spring配置文件,public class ItcastClassPathXmlApplicationContext private List beanDefines = new ArrayList(); public ItcastApplicationContext(String filename) init(filename); private void init(String filename) SAXReader saxReader = new SAXReader(); Document document=null;

16、try URL xmlpath = this.getClass().getClassLoader().getResource(filename); document = saxReader.read(xmlpath); Map nsMap = new HashMap(); nsMap.put(ns,http:/www.springframework.org/schema/beans);/加入命名空间 XPath xsub = document.createXPath(/ns:beans/ns:bean);/创建beans/bean查询路径 xsub.setNamespaceURIs(nsMap);/设置命名空间 List beans = xsub.selectNodes(document);/获取文档下所有bean节点 for(

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

当前位置:首页 > 中学教育 > 教学课件 > 高中课件

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