spring
文章平均质量分 63
aaa11111232
这个作者很懒,什么都没留下…
展开
-
spring容器创建对象的时机
在spring基础(一)中,我们谈到了spring容器创建对象的三种方式,现在我们来谈一下spring容器创建对象的时机:那么,我们如何判断一个对象是在spring容器启动的时候创建的呢 还是在我们调用这个对象的时候创建的? 在上面一个spring基础(一)中,我们写了如下的测试类:public class testHelloSpring { @Test public void t原创 2015-09-10 15:12:26 · 4695 阅读 · 3 评论 -
aop代理原理
流程: 1、首先当我们启动spring容器的时候,spring的配置文件被加载。 2、根据配置文件为所有的Bean创建对象。 3、创建完对象之后,会遇到aop的配置。 4、首先解析切入点表达式,并把切入点表达式与bean相匹配,如果能匹配成功,为该bean创建代理对象。如果匹配不成功,则代理对象为目标类。 5、因为代理对象的方法是由目标方法+通知组成,所以spring会根据aop:aspe原创 2015-09-15 15:53:48 · 238 阅读 · 0 评论 -
aop入门前内容:静态代理
在学习aop之前,为了更好,更全面的理解aop打好基础。我们先要复习一下代理模式,首先我们来谈一下静态代理。 我们拿hibernate的一个小例子: 在保存学生的时候,经常使用到这样的语句://开启事务Transation transation=session.beginTransation();//操作session.update()/save()/delete();//提交事务tra原创 2015-09-12 21:35:31 · 311 阅读 · 0 评论 -
springAOP的入门例子
我们通过操作hibernate保存一个数据来体验一下springAOP功能需求:利用springAOP把一个person对象存放到数据库中. 需求分析:我们要定义一个接口来实现保存person的方法,然后让目标类来操作数据库保存,同时使用切面的通知来开启/提交事务 构建开发环境: 除了这些spring和hibernate的包之外,由于这里需要用到AOP,所以还要导入spri原创 2015-09-15 15:01:41 · 410 阅读 · 0 评论 -
一个目标类对应多个切面的例子
在之前的cglib代理原理中(至于cglib和jdk代理的区别,看之前的博文),我们涉及到了多个切面,但是那时候说的切面,还不算真正意义上的切面(没有在spring配置文件中配置)。现在我修改一个那个例子.需求:我们仍然查询某一个人的薪水需求分析:我们直接通过目标类来查询某个人的薪水,但是在我们通过调用目标方法的时候,有各种通知在运作,就像拦截器一样,如果没有相应的权限的话,就不给查询。通知的分析:原创 2015-09-18 17:51:30 · 2679 阅读 · 0 评论 -
aop的概念总结
以后我们解释某一个概念的时候,我们应该通过它的应用例子来解释,而不是当别人问aop是什么?我们就直接说:“面向切面编程”。这样回答跟没有说一样。例子: 当我们通过网页输入数据来保存某一个注册者的信息的时候,页面里面有文件上传,表单验证,安全验证等操作。我们的目标类就单单用来保存用户,把文件上传,表单验证,安全验证等步骤放在切面中处理。这个就是aop的例子。可以让目标方法和切面通知松耦合。原创 2015-09-19 11:46:39 · 317 阅读 · 0 评论 -
通知的种类
通知的种类:1、前置通知2、后置通知3、最终通知4、异常通知5、环绕通知在之前的例子中,我们使用到了before(前置通知)和after-returning(后置通知)。还有after最终通知(最终通知)和around(环绕通知)。前置通知和后置通知已经在前面的帖子涉及到,这里只做总结:前置通知:*在目标方法执行前执行*所以目标方法如果出现异常,这里还会执行后置通知:*在目标方法执行后原创 2015-09-18 15:00:19 · 724 阅读 · 0 评论 -
aop的需求分析:错误异常分析
但是,我们学习过aop之后,我们知道了有异常通知这种方式。下面是代码的实现://dao层public interface personDAO { public void savePerson() throws Exception;}//dao层实现public class personDAOImpl implements personDAO { @Override pub原创 2015-09-19 11:24:30 · 429 阅读 · 0 评论 -
springAOP的注解
前面说到了使用注解的方式把目标类和切面放到spring容器中,那么我们现在使用注解的形式把aop配置到spring容器中。 为了突出区别,我们把前面“springAOP的入门例子“拿出来重构。关于具体的需求以及需求分析,可以查看前面的文章。原创 2015-09-22 10:08:54 · 492 阅读 · 0 评论 -
spring与jdbc结合的方式
我们需要通过spring来操作jdbc的时候,由于jdbc框架属于模板编程:固定的写法,传入datasource,获取连接,得到statement,然后执行。但是它们所执行的sql语句是不一样的,对于这种情况,称之为模板编程。 我们先来看一下jdbcDaoSupport: 这里的方法只是这个类的一部分,首先我们可以看到,jdbcDaoSupport是一个抽象类,并且把jdbcTemplate原创 2015-09-22 16:54:29 · 372 阅读 · 0 评论 -
spring声明式事务处理(使用jdbc操作数据库)
声明式:针对编程人员,声明spring容器遇到哪些目标方法时需要开启事务,哪些不用开启事务。 事务处理:把事务处理交给spring容器来完成。 spring声明式事务处理的目标: 让程序员从事务处理中脱离开来,交给spring完成,并声明哪些目标方法需要开启事务,哪些不需要。spring声明式事务处理的步骤:构建开发环境导入所需jar包把dataSource放到spring容器中,并原创 2015-09-23 17:10:10 · 1460 阅读 · 0 评论 -
cglib动态代理
jdk代理的区别: 首先要把导入工作环境中//日志类:public class Logger implements interceptor{ @Override public void interceptor() { System.out.println("logging"); }}//权限类public class Privilege原创 2015-09-14 16:56:59 · 268 阅读 · 0 评论 -
aop概念
概念引入:切面:当我们要操作重要数据库中的某一张表的时候,通常要经过日志、安全框架、事务、操作、提交事务等步骤,其中,操作这一步骤对应的类,就是我们说的目标类,除了目标类以外的类,就叫做切面。通知:切面中的方法,叫做通知。切入点: 如图所示,判断是否符合某一个要求的语句,就叫切入点。只有符合了切入点的方法,才能将通知和目标方法结合。织入:形成代理对象方法(由通知和目标方法组成)的过程原创 2015-09-14 15:15:00 · 239 阅读 · 0 评论 -
scope的取值对spring容器创建对象的单/多例的影响
在前面,我们讨论到了spring容器创建对象的3种方式以及spring容器创建对象的时机,那么我们现在来讨论一下spring容器创建对象的单/多例 那么怎样判断spring容器创建的对象是单例还是多例呢?public class testHelloSpring { /** * 判断spring容器创建的对象是单例/还是多例 */ @Test public原创 2015-09-10 16:10:33 · 729 阅读 · 0 评论 -
springDi
DI的定义:给配置文件中的bean对象赋值。方式:一种是利用其属性的setter方法,另外一种是利用构造函数 我们先来讨论第一种:利用属性的setter方法赋值:首先,先创建好类,并且配置到配置文件中:public class Person implements Serializable { //基本类型 private Long pid; //String pri原创 2015-09-10 20:47:22 · 375 阅读 · 0 评论 -
spring容器创建对象的生命周期
前面我们提到了,IOC的概念:把对象的创建、初始化、销毁等工作交给spring容器来完成。对象的创建我们在前面几个例子已经讨论到了,现在,我们来讨论一下对象的初始化,销毁对象的初始化和销毁,也是有spring来完成,可是我们之前在执行的时候,没有看见它们的踪影。 对于了解这个问题,可以设置spring的配置文件的bean中的init-method和destroy-method的取值。 首先,我们原创 2015-09-10 17:43:14 · 5903 阅读 · 0 评论 -
spring基础(一)
下面我们来讨论 1、spring IOC的定义 2、别名 3、spring对象的创建 4、spring对象的创建方式springIOC的定义:把创建对象的创建、初始化、销毁等工作交给spring容器来完成(控制反转)构建开发环境: 单单做spring的话,可以直接只用上图中的2个jar包那么,让spring容器来完成,首先就要把类写好,然后再把这个类放到spring容器里面,即放到spri原创 2015-09-10 14:21:16 · 376 阅读 · 0 评论 -
springIOC注解
引入:在传统的编码中,我们使用xml文件,把一个类放到spring容器中,现在我们还可以使用注解的方式,把一个类放到spring容器中。步骤:首先,我们要引入的还是命名空间,命名空间与上面一个帖子里面的注解是一样的,所以在这里我们就不做讨论。配置文件: <!-- component:与bean的意思一样 base-package:表示包名原创 2015-09-12 14:55:44 · 222 阅读 · 0 评论 -
DI注解
问题引入:在过去,我们经常使用setter来给属性赋值,这样会造成要写很多代码,如果属性一多,代码量就非常的惊人,虽然说不用我们自己写setter,但是代码量还是要算的。那么,为了解决这个问题,spring就引入了注解来为Di中的属性赋值。我们拿代码来说话public class Person implements Serializable { //基本类型 private Long原创 2015-09-12 13:28:49 · 1163 阅读 · 0 评论 -
springIOC和DI的意义
引入现在我这里有一个文档接口,里面有读和写的方法。现在有3个类实现了这个接口,分别是word,excel,pdf。然后有一个文档管理类,在文档管理类里面调用文档的读和写的方法。代码实现如下:public interface Document { public void read(); public void write();}public class ExcelDocument i原创 2015-09-11 13:41:11 · 484 阅读 · 0 评论 -
利用注解重构前面几个例子
前面我们用了document 和Mvc这两个例子,现在我们使用注解来重构一下:document://document类@Component("document")public interface Document { public void read(); public void write();}//管理类@Component("documentManager")publ原创 2015-09-12 16:05:42 · 317 阅读 · 0 评论 -
aop入门:动态代理
引入:在前面我们涉及到了静态代理,并且了解了它的缺点之后,我们来谈一下动态代理。首先动态代理分成以下几种情况:1、目标类和代理类实现共同的接口 a)、jdk代理(即借助了jdk的API完成) 2、代理类继承了目标类 a)、hibernate:javasist b)、spring:cglib 注:javasist是一个jar包,在学习hibernate的时候,我原创 2015-09-14 10:30:06 · 292 阅读 · 0 评论 -
关于spring配置文件的继承和抽象属性
抽象属性:应用场景:如果我们把一个类加到spring容器中,但是又不想spring容器为它创建对象的话,那么使用bean中的abstract对象。比如说一些公共的类。就算创建了对象也没有用,由子类来继承 比如说://这是一个通用类,只是有这些方法,创建这个类的对象没有什么用//让有实际应用场合的类来继承这个类public class commonObject { public void原创 2015-09-12 17:07:10 · 493 阅读 · 0 评论 -
spring声明式事务处理(hibernate)
spring声明式事务处理(使用hibernate操作数据库)在上一个博文我们讨论到了spring声明式事务处理与jdbc的整合。 思路: 1、无论是jdbc还是hibernate,都要使用到datasSource,所以首先要导入dataSource。 2、测试dataSource是否导入成功 3、bean的创建,以及映射文件,hibernate的配置文件, 4、建立dao,service层原创 2015-09-24 16:39:02 · 395 阅读 · 0 评论