随笔分类 - spring
摘要:7.2 JDBC模板类7.2.1 概述 Spring JDBC抽象框架core包提供了JDBC模板类,其中JdbcTemplate是core包的核心类,所以其他模板类都是基于它封装完成的,JDBC模板类是第一种工作模式。 JdbcTemplate类通过模板设计模式帮助我们消除了冗长的代码,只做需要做...
阅读全文
摘要:7.1 概述7.1.1 JDBC回顾 传统应用程序开发中,进行JDBC编程是相当痛苦的,如下所示: //cn.javass.spring.chapter7. TraditionalJdbcTest @Test public void test() throws Except...
阅读全文
摘要:如果我们有多个通知想要在同一连接点执行,那执行顺序如何确定呢?Spring AOP使用AspectJ的优先级规则来确定通知执行顺序。总共有两种情况:同一切面中通知执行顺序、不同切面中的通知执行顺序。 首先让我们看下1)同一切面中通知执行顺序:如图6-6所示。图6-6 同一切面中的通知执行顺序而如果在...
阅读全文
摘要:前边章节已经介绍了声明通知,但如果想获取被被通知方法参数并传递给通知方法,该如何实现呢?接下来我们将介绍两种获取通知参数的方式。使用JoinPoint获取:Spring AOP提供使用org.aspectj.lang.JoinPoint类型获取连接点数据,任何通知方法的第一个参数都可以是JoinPo...
阅读全文
摘要:6.5.1 Spring AOP支持的AspectJ切入点指示符 切入点指示符用来指示切入点表达式目的,,在Spring AOP中目前只有执行方法这一个连接点,Spring AOP支持的AspectJ切入点指示符如下: execution:用于匹配方法执行的连接点; within:用于匹...
阅读全文
摘要:Spring除了支持Schema方式配置AOP,还支持注解方式:使用@AspectJ风格的切面声明。6.4.1 启用对@AspectJ的支持 Spring默认不支持@AspectJ风格的切面声明,为了支持需要使用如下配置: 这样Spring就能发现@AspectJ风格的切面并且将切面应用到目标对象...
阅读全文
摘要:6.3 基于Schema的AOP 基于Schema的AOP从Spring2.0之后通过“aop”命名空间来定义切面、切入点及声明通知。 在Spring配置文件中,所以AOP相关定义必须放在标签下,该标签下可以 有、、标签,配置顺序不可变。:用来定义切入点,该切入点可以重用;:用来定义只有一个通知和一...
阅读全文
摘要:6.2.1 准备环境 首先准备开发需要的jar包org.springframework.aop-3.0.5.RELEASE.jarcom.springsource.org.aspectj.weaver-1.6.8.RELEASE.jarcom.springsource.org.aopalliance...
阅读全文
摘要:6.1.1 AOP是什么 考虑这样一个问题:需要对系统中的某些业务做日志记录,比如支付系统中的支付业务需要记录支付相关日志,对于支付系统可能相当复杂,比如可能有自己的支付系统,也可能引入第三方支付平台,面对这样的支付系统该如何解决呢?传统解决方: 1)日志部分提前公共类LogUti...
阅读全文
摘要:5.4.1 xml风格的配置 SpEL支持在Bean定义时注入,默认使用“#{SpEL表达式}”表示,其中“#root”根对象默认可以认为是 ApplicationContext,只有ApplicationContext实现默认支持SpEL,获取根对象属性其实是获取容器中的Bean。 首先看下配置方...
阅读全文
摘要:5.3 SpEL语法5.3.1 基本表达式一、字面量表达式:SpEL支持的字面量包括:字符串、数字类型(int、long、float、double)、布尔类型、null类型。类型示例字符串String str1 = parser.parseExpression("'Hello World!'").g...
阅读全文
摘要:5.1概述5.1.1 概述 Spring表达式语言全称为“Spring Expression Language”,缩写为“SpEL”,类似于Struts2x中使用的OGNL表达式语言,能在运行时构建复杂表达式、存取对象图属性、对象方法调用 等等,并且能与Spring功能完美整合,如能用来配置Bean...
阅读全文
摘要:4.3.1 ResourceLoader接口 ResourceLoader接口用于返回Resource对象;其实现可以看作是一个生产Resource的工厂类。public interface ResourceLoader { Resource getResource(String loc...
阅读全文
摘要:4.2 内置Resource实现4.2.1 ByteArrayResource ByteArrayResource代表byte[]数组资源,对于“getInputStream”操作将返回一个ByteArrayInputStream。首先让我们看下使用ByteArrayResource如何处理byte...
阅读全文
摘要:4.1.1 概述 在日常程序开发中,处理外部资源是很繁琐的事情,我们可能需要处理URL资源、File资源资源、ClassPath相关资源、服务器相关资源 (JBoss AS 5.x上的VFS资源)等等很多资源。因此处理这些资源需要使用不同的接口,这就增加了我们系统的复杂性;而且处理这些资源步骤都是类...
阅读全文
摘要:由于Spring MVC默认是Singleton的,所以会产生一个潜在的安全隐患。根本核心是instance变量保持状态的问题。这意味着每个request过来,系统都会用原有的instance去处理,这样导致了两个结果:一是我们不用每次创建Controller,二是减少了对象创建和垃圾收集的时间;由
阅读全文
摘要:Spring MVC Controller默认是单例的: 单例的原因有二: 1、为了性能。 2、不需要多例。 1、这个不用废话了,单例不用每次都new,当然快了。 2、不需要实例会让很多人迷惑,因为spring mvc官方也没明确说不可以多例。 我这里说不需要的原因是看开发者怎么用了,如果你给con
阅读全文
摘要:3.4 Bean的作用域 什么是作用域呢?即“scope”,在面向对象程序设计中一般指对象或变量之间的可见范围。而在Spring容器中是指其创建的Bean对象相对于其他Bean对象的请求可见范围。Spring提供“singleton”和“prototype”两种基本作用域,另外提供“request”...
阅读全文
摘要:3.3.1 延迟初始化Bean 延迟初始化也叫做惰性初始化,指不提前初始化Bean,而是只有在真正使用时才创建及初始化Bean。 配置方式很简单只需在标签上指定 “lazy-init” 属性值为“true”即可延迟初始化Bean。 Spring容器会在创建容器时提前初始化“singleton”作用域...
阅读全文
摘要:3.2.1 什么是循环依赖 循环依赖就是循环引用,就是两个或多个Bean相互之间的持有对方,比如CircleA引用CircleB,CircleB引用 CircleC,CircleC引用CircleA,则它们最终反映为一个环。此处不是循环调用,循环调用是方法之间的环调用。如图3-5所示:图3-5 循环...
阅读全文
浙公网安备 33010602011771号