Spring
琴剑山庄
这个作者很懒,什么都没留下…
展开
-
Spring学习心得(0)--动态代理
java动态代理(JDK和cglib)JAVA的动态代理 代理模式 代理模式是常用的java设计模式,他的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类,以及事后处理消息等。代理类与委托类之间通常会存在关联关系,一个代理类的对象与一个委托类的对象关联,代理类的对象本身并不真正实现服务,而是通过调用委托类的对象的相关方法,来提供特定的原创 2016-12-14 14:16:35 · 342 阅读 · 0 评论 -
Spring学习心得(14)--cglib动态代理
cglib动态代理与jdk代理的区别: 首先要把导入工作环境中//日志类:public class Logger implements interceptor{ @Override public void interceptor() { System.out.println("logging"); }}//权限类public clas原创 2017-03-14 15:10:17 · 305 阅读 · 0 评论 -
Spring学习心得(15)-- AOP的入门例子
我们通过操作hibernate保存一个数据来体验一下springAOP功能需求:利用springAOP把一个person对象存放到数据库中. 需求分析:我们要定义一个接口来实现保存person的方法,然后让目标类来操作数据库保存,同时使用切面的通知来开启/提交事务 构建开发环境: 除了这些spring和hibernate的包之外,由于这里需要用到AOP,所以还要导入s原创 2017-03-14 15:24:28 · 249 阅读 · 0 评论 -
Spring学习心得(16)-- aop代理原理
流程: 1、首先当我们启动spring容器的时候,spring的配置文件被加载。 2、根据配置文件为所有的Bean创建对象。 3、创建完对象之后,会遇到aop的配置。 4、首先解析切入点表达式,并把切入点表达式与bean相匹配,如果能匹配成功,为该bean创建代理对象。如果匹配不成功,则代理对象为目标类。 5、因为代理对象的方法是由目标方法+通知组成,所以spring会根据ao原创 2017-03-14 15:30:36 · 309 阅读 · 0 评论 -
Spring学习心得(17)-- 切入点表达式
原创 2017-03-14 15:33:13 · 341 阅读 · 0 评论 -
Spring学习心得(18)-- 通知的种类
通知的种类:1、前置通知2、后置通知3、最终通知4、异常通知5、环绕通知在之前的例子中,我们使用到了before(前置通知)和after-returning(后置通知)。还有after最终通知(最终通知)和around(环绕通知)。前置通知和后置通知已经在前面的帖子涉及到,这里只做总结:前置通知:*在目标方法执行前执行*所以目标方法如果出现异常,原创 2017-03-14 15:50:29 · 568 阅读 · 0 评论 -
Spring学习心得(19)-- 一个目标类对应多个切面的例子
在之前的cglib代理原理中(至于cglib和jdk代理的区别,看之前的博文),我们涉及到了多个切面,但是那时候说的切面,还不算真正意义上的切面(没有在spring配置文件中配置)。现在我修改一个那个例子.需求:我们仍然查询某一个人的薪水需求分析:我们直接通过目标类来查询某个人的薪水,但是在我们通过调用目标方法的时候,有各种通知在运作,就像拦截器一样,如果没原创 2017-03-14 15:57:45 · 2957 阅读 · 0 评论 -
Spring学习心得(20)--aop的需求分析:错误异常分析
但是,我们学习过aop之后,我们知道了有异常通知这种方式。下面是代码的实现://dao层public interface personDAO { public void savePerson() throws Exception;}//dao层实现public class personDAOImpl implements personDAO {原创 2017-03-14 16:06:40 · 405 阅读 · 0 评论 -
Spring学习心得(21)-- spring与jdbc结合的方式
我们需要通过spring来操作jdbc的时候,由于jdbc框架属于模板编程:固定的写法,传入datasource,获取连接,得到statement,然后执行。但是它们所执行的sql语句是不一样的,对于这种情况,称之为模板编程。 我们先来看一下jdbcDaoSupport: 这里的方法只是这个类的一部分,首先我们可以看到,jdbcDaoSupport是一个抽象类,并且把jdbcTempl原创 2017-03-14 16:27:36 · 536 阅读 · 0 评论 -
Spring学习心得(22)-- spring声明式事务处理(使用jdbc操作数据库)
声明式:针对编程人员,声明spring容器遇到哪些目标方法时需要开启事务,哪些不用开启事务。 事务处理:把事务处理交给spring容器来完成。 spring声明式事务处理的目标: 让程序员从事务处理中脱离开来,交给spring完成,并声明哪些目标方法需要开启事务,哪些不需要。spring声明式事务处理的步骤:构建开发环境导入所需jar包把dataS原创 2017-03-15 09:38:27 · 364 阅读 · 0 评论 -
Spring学习心得(23)-- spring声明式事务处理(hibernate)
spring声明式事务处理与hibernate的整合。 在上一个博文我们讨论到了spring声明式事务处理(jdbc操作数据库)。 思路: 1、无论是jdbc还是hibernate,都要使用到datasSource,所以首先要导入dataSource。 2、测试dataSource是否导入成功 3、bean的创建,以及映射文件,hibernate的配置文件, 4、建立dao原创 2017-03-15 09:43:41 · 304 阅读 · 0 评论 -
Spring学习心得(13)-- jdk动态代理
引入:在前面我们涉及到了静态代理,并且了解了它的缺点之后,我们来谈一下动态代理。首先动态代理分成以下几种情况:1、目标类和代理类实现共同的接口 a)、jdk代理(即借助了jdk的API完成) 2、代理类继承了目标类 a)、hibernate:javasist b)、spring:cglib 注:javasist是一个jar包,在学习hibernate的时原创 2017-03-14 15:07:47 · 278 阅读 · 0 评论 -
Spring学习心得(12)-- aop入门前内容:静态代理
在学习aop之前,为了更好,更全面的理解aop打好基础。我们先要复习一下代理模式,首先我们来谈一下静态代理。 我们拿hibernate的一个小例子: 在保存学生的时候,经常使用到这样的语句://开启事务Transation transation=session.beginTransation();//操作session.update()/save()/delete();//提原创 2017-03-14 14:54:14 · 389 阅读 · 0 评论 -
Spring学习心得(11)-- spring配置文件的继承和抽象属性
抽象属性:应用场景:如果我们把一个类加到spring容器中,但是又不想spring容器为它创建对象的话,那么使用bean中的abstract对象。比如说一些公共的类。就算创建了对象也没有用,由子类来继承 比如说:/这是一个通用类,只是有这些方法,创建这个类的对象没有什么用//让有实际应用场合的类来继承这个类public class commonObject { pu原创 2017-03-14 14:42:31 · 1281 阅读 · 1 评论 -
Spring学习心得(1)-- 简单开发环境搭建
去官网下载开发包。一,我的项目结构二,搭建准备导入jar包:spring.jar,commons-logging.jar,log4j-1.2.15.jar,junit-4.4.jar日志文件放入src目录下:log4j.propertiesspring配置文件放入src目录下:applicationContext.xml三,创建HelloWorld类将要纳入sp原创 2016-12-14 14:43:19 · 491 阅读 · 0 评论 -
Spring学习心得(2)-- 创建对象的方式
一、通过构造函数创建对象。2.1 利用无参构造函数+setter方法注入值最基本的对象创建方式,只需要有一个无参构造函数(类中没有写任何的构造函数,默认就是有一个构造函数,如果写了任何一个构造函数,默认的无参构造函数就不会自动创建哦!!)和字段的setter方法。Person类:package com.mc.base.learn.spring.bean;public c原创 2017-03-14 11:15:27 · 378 阅读 · 0 评论 -
Spring学习心得(3)-- Spring容器创建对象的时机
spring容器创建对象的时机:那么,我们如何判断一个对象是在spring容器启动的时候创建的呢 还是在我们调用这个对象的时候创建的?在单例的情况下:在上面一个spring基础(一)中,我们写了如下的测试类:public class testHelloSpring { @Test public void test1(){ //启动spri原创 2017-03-14 11:22:49 · 723 阅读 · 1 评论 -
Spring学习心得(4)-- Spring容器创建对象的单/多例
在前面,我们讨论到了spring容器创建对象的3种方式以及spring容器创建对象的时机,那么我们现在来讨论一下spring容器创建对象的单/多例 那么怎样判断spring容器创建的对象是单例还是多例呢?public class testHelloSpring { /** * 判断spring容器创建的对象是单例/还是多例 */ @Test原创 2017-03-14 11:30:51 · 5993 阅读 · 0 评论 -
Spring学习心得(5)-- spring容器创建对象的生命周期
IOC的概念:把对象的创建、初始化、销毁等工作交给spring容器来完成。对象的创建我们在前面几个例子已经讨论到了,现在,我们来讨论一下对象的初始化,销毁对象的初始化和销毁,也是有spring来完成,可是我们之前在执行的时候,没有看见它们的踪影。 对于了解这个问题,可以设置spring的配置文件的bean中的init-method和destroy-method的原创 2017-03-14 13:46:52 · 3364 阅读 · 0 评论 -
Spring学习心得(6)-- spring DI(依赖注入)
DI的定义:给配置文件中的bean的属性赋值。方式:一种是利用其属性的setter方法,另外一种是利用构造函数 我们先来讨论第一种:利用属性的setter方法赋值:首先,先创建好类,并且配置到配置文件中:public class Person implements Serializable { //基本类型 private Lon原创 2017-03-14 14:01:33 · 368 阅读 · 0 评论 -
Spring学习心得(7)-- DI注解
在过去,我们经常使用setter来给属性赋值,这样会造成要写很多代码,如果属性一多,代码量就非常的惊人,虽然说不用我们自己写setter,但是代码量还是要算的。那么,为了解决这个问题,spring就引入了注解来为Di中的属性赋值。我们拿代码来说话public class Person implements Serializable { //基本类型 priv原创 2017-03-14 14:20:24 · 375 阅读 · 0 评论 -
Spring学习心得(8)-- IOC注解
引入:在传统的编码中,我们使用xml文件,把一个类放到spring容器中,现在我们还可以使用注解的方式,把一个类放到spring容器中。步骤:首先,我们要引入的还是命名空间,命名空间与上面一个帖子里面的注解是一样的,所以在这里我们就不做讨论。配置文件:<!-- component:与bean的意思一样 bas原创 2017-03-14 14:27:16 · 386 阅读 · 0 评论 -
Spring学习心得(9)-- IOC和DI的意义
引入现在我这里有一个文档接口,里面有读和写的方法。现在有3个类实现了这个接口,分别是word,excel,pdf。然后有一个文档管理类,在文档管理类里面调用文档的读和写的方法。代码实现如下:public interface Document { public void read(); public void write();}public class Exce原创 2017-03-14 14:30:38 · 474 阅读 · 0 评论 -
Spring学习心得(10)-- 利用注解重构mvc
前面我们用了document 和Mvc这两个例子,现在我们使用注解来重构一下:document://document类@Component("document")public interface Document { public void read(); public void write();}//管理类@Component("documentManag原创 2017-03-14 14:35:00 · 687 阅读 · 0 评论 -
Spring学习心得(24)-- Spring事务管理(详解+实例)
Spring事务机制详解Spring事务配置的五种方式Spring中的事务管理实例详解1 初步理解理解事务之前,先讲一个你日常生活中最常干的事:取钱。 比如你去ATM机取1000块钱,大体有两个步骤:首先输入密码金额,银行卡扣掉1000元钱;然后ATM出1000元钱。这两个步骤必须是要么都执行要么都不执行。如果银行卡扣除了1000块但是ATM出钱失败的话,你将会损失1000元;如果银行原创 2017-04-19 17:43:12 · 552 阅读 · 0 评论