
Spring
文章平均质量分 68
孙悟空2015
追根溯底,回归本质,挖掘兴趣,激发思考。
展开
-
浅析Spring AOP(面向方面编程)
SpringAOP提供的优势 1、允许开发者声明企业级服务,比如:事务服务、安全性服务。EJB组件能够使用J2EE容器提供声明式服务。但是需要借助于EJB组件,而SpringAOP却不需要EJB容器,即借助于Spring的事务抽象框架能够在EJB容器外部使用企业级、声明式服务。 2、开发者可以开发满足业务需求的自定义方面。类似于JBOSS服务器中拦截器开发一样,如果标准的J2EE安全性不能满足业原创 2015-05-12 23:04:19 · 1226 阅读 · 0 评论 -
Spring学习笔记——Spring的自动装配
自动装配,官方给出的定义是这样: Spring IoC容器可以自动装配(autowire)相互协作bean之间的关联关系。因此,如果可能的话,可以自 动让Spring通过检查BeanFactory中的内容,来替我们指定bean的协作者(其他被依赖的bean)。由于 autowire可以针对单个bean进行设置,因此可以让有些bean使用autowire,有些bean不采用。autowire的转载 2015-07-08 17:47:30 · 683 阅读 · 0 评论 -
Spring学习笔记——Spring中的BeanFactory与FactoryBean
BeanFactory BeanFactory是Spring的org.springframework.beans.factory下的一个接口,是Spring IOC所遵守的基本编程规范,他的实现类有DefaultListableBeanFactory、XmlBeanFactory、ApplicationContext等,都各自实现自己的功能。 FactoryBean 通常Spring通过反射机原创 2015-07-07 16:04:10 · 1710 阅读 · 0 评论 -
Spring技术内幕——Spring的设计理念和整体架构
横看成岭侧成峰,远近高低各不同。 不识庐山真面目,只缘身在此山中。 ——苏轼 Spring的各个子项目 1、Spring Framework(Core):Spring项目的核心。包含了一系列IOC容器的设计,提供了反转模式的实现,同时还集成了AOP功能。另外,在Spring Framework中,还包含了其他Spring的基本模块,比如MVC、JDBC、事务处理模块的实现。 2、Spring原创 2015-06-11 20:36:46 · 2102 阅读 · 0 评论 -
Spring技术内幕:Spring AOP的实现原理(四)
4、目标方法的调用 如果没有拦截器会对目标对象方法直接调用。对于JDKDynamicAopProxy代理对象是通过AopUtils使用反射机制实现的。在这个调用方法中首先得到调用方法的反射对象,然后使用invoke启动对方法反射对象的调用。源码如下: /** * Invoke the given target via reflection, as part of an AOP me原创 2015-07-04 23:53:13 · 1717 阅读 · 0 评论 -
Spring学习笔记——为何使用Spring
在我们的项目中我们可以不用Hibernate、可以不用Struts、可以不用ibatis但是我们几乎每一个项目都用到了Spring,这是为什么?下面让我们分析下Spring有何优点: 1、降低组件之间耦合,实现软件各层之间的解耦 2、可以使用容器提供的众多服务,如:事务管理、消息服务等。当我们使用容器管理事务时,开发人员就不再需要手工控制事务,也不需要处理负责的事务传播。 Hibernate的原创 2015-07-13 13:21:29 · 1088 阅读 · 0 评论 -
Spring学习笔记——Sprin管理Bean的原理
当我们使用Spring时候在Xml文件中通过<bean id="service" class="com.finance.service.AmountServiceImpl" />配置就可以操作该Bean的属性和方法,那么Spring到底是如何实现的呢?下面让我们自己实现这个过程。 首先我模拟Spring的命名方式创建一个Bean管理类MyClassPathXMLApplicationContext原创 2015-07-13 13:36:10 · 1621 阅读 · 0 评论 -
Spring技术内幕:Spring AOP的实现原理(五)
7、Advice通知的实现 AopProxy代理对象生成时,其拦截器也一并生成。下面我们来分析下Aop是如何对目标对象进行增强的。在为AopProxy配置拦截器的实现中,有一个取得拦截器配置过程,这个过程由DefaultAvisorChainFactory实现的,而这个工厂类负责生成拦截器链,在它的getInterceptorsAndDynamicInterceptionA- dvice方法中,原创 2015-07-06 20:49:34 · 1621 阅读 · 0 评论 -
Spring学习笔记——Spring实例化Bean的三种方式
在我们的项目中我们可以不用struts、可以不用Hibernate等,但几乎每一个项目都用到了spring了,这是为什么呢? 一、为何使用Spring 1、降低组件之间耦合,实现软件各层之间的解耦 2、可以使用容器提供的众多服务,如:事务管理、消息服务等。当我们使用容器管理事务时,开发人员就不再需要手工控制事务,也不需要处理负责的事务传播。 Hibernate的事务操作:public voi原创 2015-07-13 22:08:57 · 1025 阅读 · 0 评论 -
Spring学习笔记——Spring依赖注入原理分析
我们知道Spring的依赖注入有四种方式,分别是get/set方法注入、构造器注入、静态工厂方法注入、实例工厂方法注入 下面我们先分析下这几种注入方式 1、get/set方法注入public class SpringAction { //注入对象springDao private SpringDao springDao; //一定要写被注入对象的set方法原创 2015-07-18 23:55:58 · 3688 阅读 · 0 评论 -
Spring学习笔记——Spring如何装配各种类型的属性以及实际应用
在类中的定义的属性我们可以通过Spring的容器给他们赋值,Spring这种功能在我们实际中有什么作用呢?举个我在工作中实际用的例子吧, 如果我们把数据库的连接配置文件加密了,我们就不能直接加载使用了,这时候我们需要先把配置文件进行解密,然后把解密之后的值赋给一个常量类,这时候我们通过加载这个常量类中的属性来完成数据库的连接。 代码如下: <!-- 解密config.properties文原创 2015-07-20 22:43:16 · 865 阅读 · 0 评论 -
Spring学习笔记——Spring中lazy-init与abstract详解
Spring的懒加载的作用是为了避免无谓的性能开销,就是当真正需要数据的时候才去执行数据的加载操作。不仅仅在Spring中,我们在实际的编码过程中也应该借鉴这种思想,来提高我们程序的效率。 首先我们看一段配置文件:<beans> <bean> <bean id="creditService" type="com.jader.service.CreditServiceImpl原创 2015-07-08 10:27:20 · 3477 阅读 · 0 评论 -
Spring技术内幕:Spring AOP的实现原理(三)
生成SingleTon代理对象在getSingleTonInstance方法中完成,这个方法时ProxyFactoryBean生成AopProxy对象的入口。代理对象会封装对target目标对象的调用,也就是说针对target对象的方法调用行为会被这里生成的代理对象所拦截。具体的生成过程是首先读取ProxyFactoryBean配置,为生成代理对象做好准备。Spring通过AopProxy类来具体生原创 2015-06-27 16:18:10 · 1488 阅读 · 1 评论 -
Spring技术内幕:Spring AOP的实现原理(二)
**二、AOP的设计与实现 1、JVM的动态代理特性** 在Spring AOP实现中, 使用的核心技术时动态代理,而这种动态代理实际上是JDK的一个特性。通过JDK的动态代理特性,可以为任意Java对象创建代理对象,对于具体使用来说,这个特性使通过Java Reflection API来完成的。在此之前先简要复习一下Proxy模式,其静态类图如下: 我们可以看到有一个RealSubjec原创 2015-06-24 21:14:58 · 1480 阅读 · 0 评论 -
浅析Spring事务详解
一、Spring事务的传播属性 Propagation(传播属性) REQUIRED–支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择。ServicerA{ //调用methodA的时候如果没有事务将开启事务,这时候再调用methodB的时候发现已经有事务,此时methodB会加入到methodA的事务中,无论methodA和methodB中任何一个地方出现异常都会回滚事务,例原创 2015-04-19 10:59:57 · 1112 阅读 · 0 评论 -
浅析Spring IOC(控制反转)
一、BeanFactory轻量级 三种访问ApplicationContext.xml方式: 1、Resource resource = new ClassPathResource(“application.xml”); BeanFactory factory = new XmlBeanFactory(resource); HelloWorld hello = facto原创 2015-05-05 22:11:02 · 910 阅读 · 0 评论 -
Spring技术内幕——Spring Framework的IOC容器实现(二)
三、IOC容器的初始化过程 IOC容器的初始化时由前面介绍的refresh方法来启动的,这个方法标志着IOC容器的正式启动。这个启动包括BeanDefinition的Resource定位、载入和注册。下面我们将详细分析这三个实现过程,Spring把这三个过程分开,并使用不同的模块来完成,通过这样的设计让用户更加灵活的这三个过程进行剪裁和扩展,定义出最适合自己的IOC容器的初始化过程。 第一个过程原创 2015-06-16 20:33:32 · 1545 阅读 · 0 评论 -
Spring技术内幕——Spring Framework的IOC容器实现(一)
一、SpringIOC容器概述 IOC容器和依赖反转的模式 在面向对象的系统中,对象封装了数据和对数据的处理,对象的依赖关系常常体现在对数据和方法的依赖上。这些依赖关系可以通过把对象的依赖注入交给框架IOC容器来完成。他可以再解耦代码的同时提高了代码的可测试性。 依赖控制反转的实现由很多种方式,在Spring中,IOC容器是实现这个模式的载体,他可以再对象生成或者初始化时直接将数据注入到对象中原创 2015-06-15 21:18:03 · 2139 阅读 · 0 评论 -
Spring技术内幕——Spring Framework的IOC容器实现(四)
前面分析了BeanDefinition在IOC容器中的载入和解析过程。在这些动作完成以后,用户定义的BeanDefinition信息已经在容器内建立起了自己的数据结构以及相应的数据表示,但此时这些数据不能供IOC容器直接使用,需要在IOC容器中对这些BeanDefinition数据进行注册。这个注册为IOC容器提供了更友好的使用方式,在DefaultListableBeanFactory中,是通过H原创 2015-06-18 21:06:10 · 1141 阅读 · 0 评论 -
Spring技术内幕——Spring Framework的IOC容器实现(三)
接上一篇的时序图。这里调用的loadBeanDefintions实际上是一个抽象方法,那么实际载入过程发生在哪里呢?在loadBeanDefintions中,初始化了读取器XMLBeanDefinitionReader,然后把这个读取器在IOC容器中设置好(过程和编程式使用XMLBeanFactory是类似的),最后是启动读取器来完成BeanDefinition在IOC容器中的载入,代码如下:/**原创 2015-06-17 21:04:39 · 1181 阅读 · 0 评论 -
Spring技术内幕——Spring Framework的IOC容器实现(五)(大结局)
这里通过使用BeanDefinitionResolver来对BeanDefinition进行解析,然后注入到property中。下面到BeanDefinitionValueResolver中看一下解析过程,以对Bean reference进行解析为例 /** * Resolve a reference to another bean in the factory. * cl原创 2015-06-19 11:36:12 · 1815 阅读 · 0 评论 -
Spring学习笔记——关于Spring注解扫描不能注入new对象问题
这几天Leader让我用工厂模式对部分业务逻辑代码进行重构,过程是痛苦的(这里就不详细说了),结果很甜蜜。下面记录一下我在重构过程中遇到一个问题。 部分代码如下:@service(orderFactory)public class OrderFactory implements IOrderFactory{ public OrderCreate factory(String type){原创 2015-06-01 18:18:25 · 7637 阅读 · 0 评论 -
Spring技术内幕:SpringIOC原理学习总结
前一段时候我把Spring技术内幕的关于IOC原理一章看完,感觉代码太多,不好掌握,我特意又各方搜集了一些关于IOC原理的资料,特加深一下印象,以便真正掌握IOC的原理。 IOC的思想是:Spring容器来实现这些相互依赖对象的创建、协调工作。对象只需要关系业务逻辑本身就可以了。 SpringIOC容器的执行步骤是: 1、资源定位,即首先要找到applicationContext.xml文件原创 2015-06-23 09:59:08 · 2550 阅读 · 2 评论 -
Spring技术内幕:Spring AOP的实现原理(一)
一、SpringAOP的概述 1、AOP概念 AOP是Aspect-Oriented Programming(面向切面编程)的简称。维基百科的解释如下: Aspect是一种新的模块化机制,用来描述分散在对象、类或函数中的横切关注点(crosscutting concern)。从关注点中分离出横切关注点是面向切面的程序设计的核心。分离关注点使解决特定领域问题的代码从业务逻辑代码中独立出来,业务逻原创 2015-06-23 16:09:07 · 5050 阅读 · 2 评论 -
Spring学习笔记——Spring事务只对运行时异常回滚
我们在使用Spring时候一般都知道事务在遇到异常的时候会回滚,岂不知Spring的事务默认只有在发生运行时异常即:RunTimeException时才会发生事务,如果一个方法抛出Exception或者Checked异常Spring的事务并不会回滚。 下面我们来看看异常的分类,异常一般分为Checked异常和RunTime异常。 CheckedException: Java认为Checked异原创 2015-08-20 18:34:58 · 5054 阅读 · 0 评论