资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,#,/25,Spring,应用扩展,线上线下,平台预习,2,/23,拓展,Spring,的配置,完成超市订单系统中,Spring,与,MyBatis,的集成,本章任务,3,/23,本章目标,掌握更多配置数据源的方法,理解Bean的作用域,会使用Spring自动装配,会拆分,Spring,配置文件,4,/,23,在,Spring,中引用属性文件,数据库连接信息写在属性文件中,采用,PropertyPlaceholderConfigurer,可以引入属性文件,在,Spring,配置文件中采用诸如,$url,的方式引用属性值,driver=com.mysql.jdbc.Driver,url=jdbc:mysql:/127.0.0.1:3306/smbms?useUnicode=true&characterEncoding=utf-8,user=root,password=root,classpath:database.properties,$,的前后,不要,键入空格,,以免报错!,!,演示示例,1,:,使用属性文件配置数据源,5,/,23,使用,JNDI,数据源,通过,JNDI,从服务器容器中获取,DataSource,资源,在服务器环境中配置数据源,在,Spring,配置文件引用,JNDI,资源,java:comp/env/jdbc/smbms,演示示例,2,:使用,JNDI,数据源,6,/,23,学员操作,使用属性文件和,JNDI,配置数据源,需求说明:,在超市订单系统的基础上,使用属性文件和,JNDI,两种方式改造原有系统的,Spring,配置,并调试运行成功,完成时间,:,20,分钟,练习,7,/,23,Spring,中,Bean,的作用域,2-1,作用域,说 明,singleton,默认值。,Spring,以单例模式创建,Bean,的实例,即容器中该,Bean,的实例只有一个,prototype,每次从容器中获取,Bean,时,都会创建一个新的实例,request,用于,Web,应用环境,针对每次,HTTP,请求都会创建一个实例,session,用于,Web,应用环境,同一个会话共享同一个实例,不同的会话使用不同的实例,global session,仅在,Portlet,的,Web,应用中使用,同一个全局会话共享一个实例。对于非,Portlet,环境,等同于,session,仅适用于,WebApplicationContext,环境,示例,8,/,23,Spring,中,Bean,的作用域,2-2,singleton,与,prototype,区别:,新实例,getBean(),getBean(),getBean(),新实例,新实例,示例,示例,9,/,23,使用注解指定,Bean,的作用域,使用,Scope,注解指定,Bean,的作用域,Scope(prototype),Service(userService),public class UserServiceImpl implements UserService,/,省略其他代码,示例,10,/,23,Spring,自动装配,3-1,什么是自动装配,Spring,可以根据属性类型、名称等自动进行注入,如何使用自动装配,设置,元素的,autowire,属性,示例,示例,11,/,23,Spring,自动装配,3-2,Spring,提供的,4,种自动装配类型,取值,说明,no,默认值。,Spring,默认不进行自动装配,必须显式指定依赖对象,byName,根据属性名自动装配。,Spring,自动查找与属性名相同的,id,,如果找到,则自动注入,否则什么都不做,byType,根据属性的类型自动装配。,Spring,自动查找与属性类型相同的,Bean,,如果刚好找到唯一的那个,则自动注入;如果找到多个与属性类型相同的,Bean,,则抛出异常;如果没找到,就什么也不做,constructor,和,byType,类似,不过它针对构造方法。如果,Spring,找到一个,Bean,和构造方法的参数类型相匹配,则通过构造注入该依赖对象;如果找不到,将抛出异常,12,/,23,Spring,自动装配,3-3,每个,Bean,都需要设置,autowire,属性,较繁琐,可以为,元素设置,default-autowire,属性,影响全局,节点上,autowire,的设置可以覆盖全局设置,自动装配使得配置文件可以非常简洁,但同时也造成组件之间的依赖关系不明确,容易引发一些潜在的错误,在实际项目中要谨慎使用,!,提问,分析,示例,注意,13,/,23,拆分配置文件,拆分策略,为什么需要拆分配置文件,项目规模变大,配,置,文件可读性、可维护性差,团队开发时,多人修改同一配置文件,易发生冲突,拆分策略,公用配置,+,每个系统模块一个单独配置文件(包含,DAO,、,Service,、,Web,控制器,),公用配置,+DAO Bean,配置,+,业务逻辑,Bean,配置,+,Web,控制器,配置,两种策略各有特色,适用于不同场合,14,/,23,引入拆分后的配置文件,两种方法,利用,ClassPathXmlApplicationContext,的重载方法可以,配置多个配置文件,,,用逗号隔开或者使用通配符,使用,方式,public ClassPathXmlApplicationContext(,String configLocation,);,public ClassPathXmlApplicationContext,(String configLocations,);,以,String,方式传入多个配置文件名,演示示例,3,:拆分,Spring,配置文件,15,/,23,学员操作,实现对订单表的增删改操作,需求说明:,实现订单表的添加操作,实现根据订单,id,修改订单信息的操作,实现根据订单,id,删除订单信息的操作,要求:,以,Spring,集成,MyBatis,为基础实现,使用,Spring,事务切面实现声明式事务管理,分别使用,SqlSessionTemplate,、,MapperFactoryBean,、,MapperScannerConfigurer,几种不同方案进行实现,完成时间:,20,分钟,练习,16,/,23,共性问题集中讲解,常见问题及解决办法,代码规范问题,调试技巧,共性问题集中讲解,17,/,23,学员操作,实现对用户表的更新操作,需求说明:,实现根据用户,id,修改用户信息的操作,实现根据用户,id,删除用户信息的操作,实现根据用户,id,修改用户密码的操作,要求:,以,Spring,集成,MyBatis,为基础实现,使用,Spring,事务切面实现声明式事务管理,分别使用,SqlSessionTemplate,、,MapperFactoryBean,、,MapperScannerConfigurer,几种不同方案进行实现,完成时间:,20,分钟,练习,18,/,23,共性问题集中讲解,常见问题及解决办法,代码规范问题,调试技巧,共性问题集中讲解,19,/,23,总结,2-1,数据源,配置,使用,PropertyPlaceholderConfigurer,可以加载属性文件,使用,JNDI,的方式配置数据源,配置,Bean,的作用域,singleton,prototype,request,session,global,session,20,/,23,总结,2-2,Spring,提供自动,装配,(,autowire,),byName,byType,配置多个配置文件,通过数组方式或使用通配符(,*,),加载,使用,方式引入多个配置文件,21,/,23,问题及作业,集中问题,&,课后作业,22,/23,扫我有更多精彩课程呦,
展开阅读全文