版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Spring第二Spring第二Spring的作用?ioc、iocdi区别(对象生成被反转了BeanFactory和FactoryBean整体课程安排(32第一天:Spring框架入门、IoC控制反转的配置管理、SpringWeb集成、SpringJunit集成。第二天:SpringAOP面向切面编程、AspectJ的集成配置、JdbcTemplate工具类。第四天、第五天:综合练习:SSH整合开发、jQueryAjax今天的主要内容(AOPAOP面向切面编程的相关概念(思想、原理、相关术语AOP编程底层实现机制(JDK代理、Cglib代理SpringAspectJAOP编程(XML和注解1.AOP1.1.什么是AOPAOP(AspectOrientedPrograming)【扩展了解】AOPOOP(面向对象编程(ObjectOrientedProgramming,OOP程序设计)是一种计算机编程架构)代理对象,调用增强功能的代码,从而对原有业务方法进行增强!1.2.AOP的应用代理对象,调用增强功能的代码,从而对原有业务方法进行增强!1.2.AOP的应用缓存优化直接从内存对象返回,不需要查询数据库(1.3.SpringAOP编程两种Spring1.2开始支持AOP编程(传统SpringAOP编程,编程非常复 更好学SpringAOPSpring2.0AOP框架AOPSpring2.0AOP框架AOP--AspectAdvice2. 编程底层实现机制(了解AOPSpringAOPJDK2. 编程底层实现机制(了解AOPSpringAOPJDKCGLIB动态代理:在虚拟机内部,运行的时候,动态生成代理类(运行时生成,runtime生成)Proxy$$(例如:struts2Action2.1.JDK动态代1InvocationHandlerProxynewProxyInstance3InvocationHandlerinvokepublicclassJdkProxyFactoryimplementspublicclassJdkProxyFactoryimplementsprivateObjectpublicJdkProxyFactory(Objecttarget)this.target=}/*publicObjectgetProxyObject(finalObjecttarget){returntarget.getClass().getInterfaces(),newInvocationHandler(){publicObjectinvoke(Objectproxy,Methodmethod,Object[]args)throwsThrowableObjectobject=method.invoke(target,return}//privatepublicObjecttarget.getClass().getInterfaces(),this);publicvoidpublicvoidCustomerServicetarget=newCustomerServiceproxy=(CustomerService)}publicObjectinvoke(Objectproxy,Methodmethod,Object[]throwsThrowableObjectobjectmethod.invoke(target,args);//调用目标对System.out.println("日志记录完成。。。。return}privatevoidSystem.out.println("开始记录日志了。。。。}}(如果没有接口,则不能使用2.2.Cglib动态代(如果没有接口,则不能使用2.2.Cglib动态代什么是cglib?码。method.invoke(target,args)用来执行调用目标对象原来的方法。}//CGLIB代理工厂,动态的对目标生成代理对publicclassCglibProxyFactoryimplementsprivateObjectpublicCglibProxyFactory(Objecttarget)this.target=}publicObjectEnhancerenhancer=new return}publicclassProductServicepublicvoidSystem.out.println("业务层产品保存。。}public产品查询。。");return10;}}publicvoidpublicvoid//确定目标ProductServicetarget=newCglibProxyFactorycglibProxyFactory=publicObjectintercept(Objectproxy,Methodmethod,Object[]args,MethodProxymethodProxy)throwsThrowableSystem.out.println("记录日志了。。。。。。} returnmethod.invoke(target,returnmethodProxy.invokeSuper(proxy,}}2.3.代理知识小122.3.代理知识小12SpringAOP(Jdk动态代理SpringAOP1.2AOP1(target)2Advice(增强代码CustomerServiceProductServicetarget} 必须实现对应的接口(4+2(Spring测试集成1个SpringAOP4(2对:AOPAspectjaop 配置切入点和切 配置切入点和切<beansxmlns="http:///schema/beans"bean(beanId/beanbean(customerService)bean(beanId/beanbean(customerService)CustomerService..))..))this对代理对象有效,target对代理对象无效(只对目标对象有效)对象有效AspectJ切面编程AspectJ切面编程Spring1.2AOP---编写通知(通知需要实现一个接口配ProxyFactoryBean生成代理对象配置非常复杂,spring2.0AspectJAOP AspectJAdvice类SpringAOP AspectJAdvice类SpringAOPAfter(finally第二部:通知(编写 (包括切入点BeforeAdvice 配置切入点和切 配置切入点和切 分析各种通知应 分析各种通知应 Before前置通(权限不足,抛出异常aspectjAfterReturing后置Around环绕通Around环绕通增强代码的方法要返回值:Object返回值AfterThrowing抛出通作用:目标代码出现异常,通知执行。记录异常日志、通知管理员(短信、邮件After最终通After最终通(tryObjectresult=}4.3.6.Advice方法可接tryObjectresult=}4.3.6.Advice方法可接收的参数和返回值小结(参考publicreturnTypemethodpublic( @Aspectj注解5.1.搭建环webspring3_day2_annotation,jar包(11个applicationContext.xml,pertiesthrowsAfter5.2.第一步编写目5.2.第一步编写目标对象5.3.第二步编写通知,5.3.第二步编写通知,配置切@Component2)代理(jdk代理(jdk动态代理。可以使用类代理(cglib动态代理proxy-target-class 可以使用类代理(cglib动态代理proxy-target-class 使用@Pointcut定义切使用注解单独定义切入点切点方法:privatevoid SpringJdbcTemplate是一个模板工具类,简化JdbcApacheDbUtilsJdbcTemplatejdbcHibernateTemplateHibernate JdbcTemplate快速入web JdbcTemplate快速入webJDBC模版开发包数据库驱动第二步: 通过 配 通过 配置创建 (多种数据源 Spring内置数据 ApacheDBCP连接池配Apachecommons-dbcpdbcppoolC3P0连接池配C3P0连接池配(重点6.2.4.TomcatJNDI连接池配置和JNDIJava命名与目录接口(JavaNamingandDirectoryserver.xml、context.xml、工程/META-INF/context.xml(只对当前工程生效提示:该文件可以从\提示:该文件可以从\一定注意:COracle将tomcat/libtomcat/lib 外部属性文件的配propertiessrc<context:property-placeholder>通过${key} JdbcTemplate JdbcTemplate!源代码分析JdbcDaoSupport: 实现增加、删除、修改功 简单返回值的查 简单返回值的查 复杂对象返回的查queryForInt(Stringsql,Object...QuerygivenSQLtocreateapreparedstatementfromSQLandalistofargumentstobindtothequery,resultinginanint<T>queryForObject(Stringsql,Class<T>requiredType,Object...QuerygivenSQLtocreateapreparedstatementfromSQLandalistofargumentstobindtothequery,expectingaresultupdate(Stringsql,Object...IssueasingleSQLupdateoperation(suchasaninsert,updateordeletestatement)viaapreparedstatement,bindingthegiven<T>query(Stringsql,RowMapper<T><T>query(Stringsql,RowMapper<T>rowMapper,Object...QuerygivenSQLtocreateapreparedstatementfromSQLandalistofargumentstobindtothequery,mappingeachrowtoaJavaobjectviaaRowMapper.<T>queryForObject(Stringsql,RowMapper<T>rowMapper,Object...QuerygivenSQLtocreateapreparedstatementfromSQLandalistofargumentstobindtothequery,mappingasingleresultrowtoaJavaobjectviaaRowMapper.2SpringAOP(3AspectJAOP
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026云南保山施甸县社有资产经营管理中心招聘工作人员1人笔试备考试题及答案详解
- 2026四川成都高新区永安社区卫生服务中心招聘笔试参考题库及答案详解
- 2026年福建厦门市第五医院推拿科招聘职业见习生若干人笔试备考题库及答案详解
- 2026年甘肃省兰州工业学院招聘编外聘用制工作人员笔试参考题库及答案详解
- 2026北京金融控股集团有限公司暑期实习人员招聘10人笔试参考题库及答案详解
- 北京中医药大学财务处处聘非事业编制(科研助理)岗位招聘2人笔试备考题库及答案详解
- 2026北京协和医院临床药理中心合同制行政助理招聘笔试模拟试题及答案详解
- 2026重庆沙坪坝区总商会招聘秘书处工作人员笔试模拟试题及答案详解
- 2026广西贵港桂平市金田起义博物馆招聘编外工作人员2名笔试模拟试题及答案详解
- 2025年山西寿阳农村商业银行人员招聘笔试考试试题及答案详解
- 核废液高级氧化技术-洞察与解读
- 2026年一级建造师一建机电案例分析考前重点知识必背十页纸
- 十年(2016-2025)高考数学真题分类汇编16三角函数与解三角形解答题综合(六大考点65题)(解析版)
- 建设项目竣工验收汇报
- 电池动力船舶知识培训课件
- 2025年北京市公务员行测真题附答案详解考试直接用
- 统编版六年级下册语文修辞手法之比喻、拟人、夸张 课件
- 古诗三首《元日》课件 统编版语文三年级下册
- 2025年事业单位工勤技能岗位驾驶员职业技能考试真题(附答案)
- 2025年宁夏中考数学试题卷(含答案解析)
- 统编版道德与法治一年级下册4.15《戴上红领巾》 课件
评论
0/150
提交评论