免费预览已结束,剩余9页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
spring1.这个框架并不像hibernate或struts那样为了完成特定的功能(操作数据库、处理Http请求),它只是用来优化我们的工程的结果、提升设计、降低耦合度。2.核心:应用上下文ApplicationContext 它就是用来管理工程中无数类型的核心,一般通过xml文件或者注解来管理。它在启动时载入xml文件或注解中的类、类之间关系的信息,在使用时通过一些方式将管理的类型或对象取出使用。3.(下载spring.zip,这里面包含了相应的jar包,以及文档)第一个spring的应用:1、导入jar包到工程中2、在src下创建一个叫applicationContext.xml的配置文件比如通过上述方式,我们就通过配置文件将,两个类Hello和Bye分别注册管理,其代号分别为hello和bye。通过这两个代号,我们之后就能取出这个两个类的实例,并进行使用。(相应的类要Hello,Bye事先自己定义好)3、使用ClassPathXmlApplicationContext来加载上一步中的xml文件,以及获取其中的某个beanApplicationContext ctx = new ClassPathXmlApplicationContext(applicationContext.xml);加载xml文件中的配置信息,两个类就被spring管理起来了Hello h = (Hello)ctx.getBean(hello);注意:取出bean时可以用多态4.开闭原则:对扩展开放,对修改关闭需求变更时,尽量扩展一个类,不要去修改原来的类;这样可以避免在原来正确的类上产生新的bug。5.spring不但可以动态创建类的实例,也可以通过配置文件动态初始化实例的属性值1、私有属性要有对应的setter方法2、在bean中定义property属性,对应类中私有属性,*可以通过配置进行属性的自动设置。 在猫的bean中注册name属性,值为TOM 注册age属性,值为10,Tom和10两个值会自动注入到猫的实例中去 *也可以通过构造方法来进行动态初始化1、在类中定义需要自动调用的构造方法2、在配置文件的bean中定义来使用构造方法进行属性值的初始化 *可以和perties格式的配置文件结合使用1、先要在配置文件中注册,载入一个perties文件的信息 2、可以在其他的bean中使用这个perties中定义的信息,比如:这种spring的xml配置文件读取传统的perties配置文件的方式,将在以后数据源配置中经常使用,perties中全是数据源配置参数,而spring的上下读取这个perties,然后将其中的参数值,在bean中使用。这样两者各司其职,perties负责jdbc的数据信息,spring的xml文件负责处理bean的注册及bean之间的关系。5.spring管理的类,属性的类型完全可以是自定义类型。这种情况下就设计到类和类之间的装配。如果是自定义类型的装配,那么property标签不再用value了,而用ref,比如:class Keyboardclass Computerprivate Keyboard keyboard;/setter.*自动装配:这个autowire=bytype表示会自动扫描上下文中的类,如果有符合Tool这个类型的就自动装配 如果一个都不符合或有多个符合就会报异常 如果有多个匹配就会报异常,可以用autowire-candidate=false来将某些bean排除:1.AOP 面向切面编程是一种思想,struts有,spring也有2.如何用spring实现?1、导入相关的jar包2、先定义一个目标类(其中有核心的逻辑,但共同的逻辑将会通过切面在切入点切入)3、再定义一个切面Aspect操作类,在里面写上要重复切入到目标的逻辑4、写配置文件,关键要配置,after-returning和after类似,after是在方法逻辑执行完执行,after-returning是在方法返回后执行,核心区别是如果在方法中产生了异常,after是不会执行的,但after-returning会。after-throwing是在遇到异常时执行method中的方法定义一个方法,有参数ProceedingJoinPoint,在里面写上前置、后置的逻辑,并在之间调用ceed(),也可以灵活的通过条件判断决定是否要调用ceed().proceed()的返回值就是方法的返回值jp.getArgs()返回一个Object数组,就是被代理的方法的参数值(如果根本没有参数,就返回一个长度为0的数组)注解AOP*在配置文件中激活自动代理*在切面类(比如刚才那个例子中就是FileOperation)的类定义上面写上Aspect注解,然后在这个切面类的方法上定义注解,前置注解Before,后置注解After,环绕注解Around。在这些注解里面还可以定义切入点point-cut,并写上类似execution(* com.oracleoaec.*.*()表达式。AOP的基石-动态代理模式代理模式一、静态代理被代理类(目标类)代理类1、目标类和代理类具有相同的接口2、代理类中定义有一个属性,类型就是目标类(或者说代理类持有一个目标类对象的引用)3、代理类的接口方法中会调用目标类的接口方法,并在其基础上添加一定的额外功能静态代理必须事先知道目标类,才能再定义代理类二、动态代理1、JDK自带动态代理功能,InvocationHandler接口、Proxya、定义一个类实现InvocationHandler,并实现其抽象方法,并传入被代理的对象(目标对象)b、Proxy.newProxyInstance(.)创建代理对象所谓动态代理,就是在定义代理逻辑时,根本不需要知道未来被代理的是什么类,什么方法而静态代理必须事先知道一些信息注意:JDK的动态代理的目标类,必须实现接口2、cglib动态代理,目标类完全可以不实现任何接口a、定义一个类实现MethodInterceptor接口,实现其抽象方法b、创建一个Enhancer对象调用其setSuperClass方法,传入被代理的目标类调用setCallback方法,传入a中定义的类的实例,也就是要回调的代理逻辑c、调用这个Enhancer对象的create方法,产生一个代理对象1.spring和数据库spring可以用bean的方式配置数据源 datasource dbcp、c3p0、纯jdbc(也勉强可以算一种数据源,只是没有连接池而已)配置完后,可以像之前普通类一样通过getBean取出连接池对象。再用getConnection()获取连接.spring 提供了默认的模板JdbcTemplate来处理大量重复的jdbc操作,这个JdbcTemplate也可以注册在applicationContext.xml文件中,注册成一个bean,而这个JdbcTemplate的bean内部又要包含一个DataSource的bean,比如类似: .以上标签就将数据源装配jdbc的模板上。2.模板包含数据源,而一般Dao包含模板对象ref中的jdbcTemplate表示上下文中定义的模板bean的idname中的jdbcTemplate表示这个Dao类中定义的属性名,要一致dao一般注入业务层、service、biz。可以使用spring的依赖注入,在Service中定义一个private的dao属性和public的setter方法,在xml中声明,让其自动注入。spring声明式事务(不用编码,只用配置文件或者注解就自动进行事务控制)默认的事务处理逻辑,只要遇到运行时异常就会自动回滚,没有遇到任何异常,会自动提交。通过rollback-for可以配置遇到什么异常回滚propagation事务传播机制REQUIRED 需要事务,如果当前存在事务,就使用当前事务,如果不存在就自动开启事务REQUIRES_NEW 每次都会开启一个新事务NOT_SUPPORTED 不需要事务,如果没有事务,就直接执行;原来就有事务的话就挂起原来的事
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 单位采购食材管理制度
- 太原科技大学《西医诊断学》2025-2026学年期末试卷
- 上海邦德职业技术学院《成本会计实务》2025-2026学年期末试卷
- 上海外国语大学《法律逻辑学》2025-2026学年期末试卷
- 同济大学《内科护理学》2025-2026学年期末试卷
- 山西警察学院《波谱解析》2025-2026学年期末试卷
- 山西晋中理工学院《中外艺术鉴赏》2025-2026学年期末试卷
- 沈阳药科大学《新石器时代》2025-2026学年期末试卷
- 山西科技学院《金融监管学》2025-2026学年期末试卷
- 电力负荷预测员负荷预测考试题目及答案
- 2026季华实验室测试中心招聘5人(广东)笔试参考题库及答案解析
- 2026年吉林四平市高职单招英语试题含答案
- 210亩黄精林下套种可行性研究报告
- 中国慢性阻塞性肺疾病诊治指南(2025版)
- 律所反洗钱内部控制制度
- 20.1 勾股定理及其应用 课件 2025-2026学年 人教版八年级数学下册
- 2025年宿州职业技术学院单招职业技能考试试题及答案解析
- 2026春人教版(新教材)小学美术二年级下册《天然的形态》教学设计
- 2025年专升本管理学原理模拟试卷及答案
- 山东省济南市2025-2026年高三上第一次模拟考试历史+答案
- 临潼介绍教学课件
评论
0/150
提交评论