
spring杂谈
文章平均质量分 81
jinnianshilongnian
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
一段Spring代码引起的调用绑定总结
代码@Componentpublic class B { void test() { System.out.println("hello"); }}@Componentpublic class A { @Autowired private B b; public final void test() { ...2014-03-04 07:41:34 · 148 阅读 · 0 评论 -
采用共享jar包部署struts2+spring集成项目会遇到的问题
比如tomcat下边有个lib,放着我们需要的struts2 + spring 集成jar包(一定要struts2和spring集成),即共享给所有webapp使用,如图:此时tomcat启动时,会先加载a项目,再加载b项目(一定要是这个顺序才会出现问题,比如tomcat是通过list file顺序部署的)。(关于tomcat的classloader请参考:http://tomcat.apa...2013-11-29 06:45:58 · 143 阅读 · 0 评论 -
详解Spring事件驱动模型
事件驱动模型简介事件驱动模型也就是我们常说的观察者,或者发布-订阅模型;理解它的几个关键点:首先是一种对象间的一对多的关系;最简单的如交通信号灯,信号灯是目标(一方),行人注视着信号灯(多方);当目标发送改变(发布),观察者(订阅者)就可以接收到改变;观察者如何处理(如行人如何走,是快走/慢走/不走,目标不会管的),目标无需干涉;所以就松散耦合了它们之间的关系。 ...2013-07-11 06:47:08 · 638 阅读 · 0 评论 -
请不要再使用低级别的AOP API
在iteye上,咨询我Spring问题中最多的一个就是:AOP方面的问题,我之前也写过类似的帖子解答那些疑问: 注入FactoryBean失败分析+解决方案spring的二次代理原因及如何排查struts2+spring集成bug——使用AOP时可能遇到的问题分析关于spring的aop拦截的问题 protected方法代理问题Spring事务不起作用 问题汇总...2013-07-09 06:24:34 · 227 阅读 · 0 评论 -
如何测试@Async异步任务
spring3支持@Async注解的异步任务,之前大家都是通过使用如线程池来完成,spring3也是使用这种方式,但更简单。 其具体实现在:org.springframework.aop.interceptor.AsyncExecutionInterceptor,是一个方法拦截器,其invoke方法的部分代码如下: Future<?> result = determine...2013-07-09 06:23:18 · 1399 阅读 · 0 评论 -
如何测试REQUIRES_NEW事务
在使用spring进行集成测试时,一般会使用@TransactionConfiguration(transactionManager = "transactionManager", defaultRollback = true)自动回滚事务,但是如果遇到REQUIRES_NEW事务,那么这个事务是不会回滚的。 1、通过覆盖其事务传播属性来完成,即如开发环境的事务属性配置如下: ...2013-07-08 10:07:54 · 239 阅读 · 0 评论 -
使用Aop工具类诊断常见问题
在实际开发过程中,我见过问的最多的两个问题是:1、为什么事务不起作用 ---->Spring事务不起作用 问题汇总2、为什么注入不了 ---->spring的二次代理原因及如何排查 我专门写了一个hack工具来诊断这些问题,因为是hack,目前只在现有版本中可用,不保证新版本可用,不过主要是诊断时使用,能用即可。 主要提供以下方法:isM...2013-07-08 06:37:18 · 127 阅读 · 0 评论 -
类继承/接口实现时Spring AOP切入点注意事项
最近好多人问我说我的我的切入点没有错误啊,怎么不起作用?而且大部分情况都是写AOP切入点时带有类继承或接口实现时出现的问题。在此总结一下,方便后人查阅。而且建议使用如IntelliJ IDEA、STS或者Eclipse装AspectJ插件自动显示切入点是否匹配目标对象/目标方法。 1、相关类1.1、抽象基类我们在写一些项目时,都会抽象一些基类,比如DAO、Service等。...2013-11-24 11:01:52 · 416 阅读 · 0 评论 -
我对Spring 容器管理事务支持的总结
之前发过几篇关于Spring的总结帖子 反响还不错,再把剩下的几篇发上来。共享给大家。我对IoC/DI的理解我对AOP的理解 我对SpringDAO层支持的总结 1、问题Connection conn = DataSourceUtils.getConnection(); //开启事务conn.setAutoCommit...2012-09-27 18:11:38 · 109 阅读 · 0 评论 -
我对SpringDAO层支持的总结
之前发过两篇关于Spring的总结帖子 反响还不错,再把剩下的几篇发上来。共享给大家。 我对IoC/DI的理解我对AOP的理解 1、问题1、JDBC/ORM框架(如Hibernate)开发中编程模型有哪些缺点? 如JDBC2、解决方案(模板设计模式,本质:将可变的和不可变的分离)模板方法模式:定义操作的步骤...2012-09-26 17:32:29 · 215 阅读 · 0 评论 -
context:component-scan扫描使用上的容易忽略的use-default-filters
问题如下方式可以成功扫描到@Controller注解的Bean,不会扫描@Service/@Repository的Bean。正确 <context:component-scan base-package="org.bdp.system.test.controller"> <context:include-filter type="annotation...2013-01-05 14:18:15 · 187 阅读 · 0 评论 -
Spring事务超时时间可能存在的错误认识
1、先看代码1.1、spring-config.xml <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="com.mysql.jdbc...2013-12-06 09:36:00 · 1237 阅读 · 1 评论 -
从一而终只使用一种Spring编程风格
代码1、组件现在很常见的就是不管如何先定义接口,如下所示: package com.sishuok;public interface Interface { public void sayHello();} 然后定义实现,真的有必要吗?思考下。package com.sishuok;public class Impl implement...2013-07-15 07:52:02 · 144 阅读 · 0 评论 -
Spring4新特性——泛型限定式依赖注入
Spring4新特性——泛型限定式依赖注入Spring4新特性——核心容器的其他改进Spring4新特性——Web开发的增强Spring4新特性——集成Bean Validation 1.1(JSR-349)到SpringMVC Spring4新特性——Groovy Bean定义DSLSpring4新特性——更好的Java泛型操作API Spring4新特性——JSR3...2013-12-13 20:46:12 · 624 阅读 · 0 评论 -
Spring Cache抽象详解
缓存简介缓存,我的理解是:让数据更接近于使用者;工作机制是:先从缓存中读取数据,如果没有再从慢速设备上读取实际数据(数据也会存入缓存);缓存什么:那些经常读取且不经常修改的数据/那些昂贵(CPU/IO)的且对于相同的请求有相同的计算结果的数据。如CPU--L1/L2--内存--磁盘就是一个典型的例子,CPU需要数据时先从L1/L2中读取,如果没有到内存中找,如果还没有会到磁盘上...2014-01-08 07:54:08 · 590 阅读 · 0 评论 -
Spring3.1新属性管理API:PropertySource、Environment、Profile
Spring3.1提供了新的属性管理API,而且功能非常强大且很完善,对于一些属性配置信息都应该使用新的API来管理。虽然现在Spring已经到4版本了,这篇文章来的晚点。 新的属性管理APIPropertySource:属性源,key-value属性对抽象,比如用于配置数据PropertyResolver:属性解析器,用于解析相应key的valueEnvironment:...2014-01-07 08:05:34 · 508 阅读 · 0 评论 -
Spring动态部署Bean/Controller/Groovy Controller
最近有好几个咨询如何动态部署Bean/动态部署Spring mvc 控制器;首先声明下:基于普通Java/JavaEE环境的不适合做动态部署;如果你有这种需求请考虑使用如Play Framework/Grails这种框架。但是还是有少量朋友会有这种需求:我的应用中只有少量几个需要动态部署的组件;好吧,那我来写一个能动态部署Bean/Controller的工具类吧。 注意,因为Spring...2014-01-06 08:00:29 · 793 阅读 · 0 评论 -
Spring4新特性——注解、脚本、任务、MVC等其他特性改进
Spring4新特性——泛型限定式依赖注入Spring4新特性——核心容器的其他改进Spring4新特性——Web开发的增强Spring4新特性——集成Bean Validation 1.1(JSR-349)到SpringMVC Spring4新特性——Groovy Bean定义DSLSpring4新特性——更好的Java泛型操作API Spring4新特性——JSR3...2013-12-25 07:58:38 · 326 阅读 · 0 评论 -
Spring4新特性——JSR310日期时间API的支持
Spring4新特性——泛型限定式依赖注入Spring4新特性——核心容器的其他改进Spring4新特性——Web开发的增强Spring4新特性——集成Bean Validation 1.1(JSR-349)到SpringMVC Spring4新特性——Groovy Bean定义DSLSpring4新特性——更好的Java泛型操作API Spring4新特性——JSR3...2013-12-24 07:48:21 · 361 阅读 · 0 评论 -
Spring4新特性——更好的Java泛型操作API
Spring4新特性——泛型限定式依赖注入Spring4新特性——核心容器的其他改进Spring4新特性——Web开发的增强Spring4新特性——集成Bean Validation 1.1(JSR-349)到SpringMVC Spring4新特性——Groovy Bean定义DSLSpring4新特性——更好的Java泛型操作API Spring4新特性——JSR3...2013-12-23 07:43:04 · 240 阅读 · 0 评论 -
Spring4新特性——Groovy Bean定义DSL
Spring4新特性——泛型限定式依赖注入Spring4新特性——核心容器的其他改进Spring4新特性——Web开发的增强Spring4新特性——集成Bean Validation 1.1(JSR-349)到SpringMVC Spring4新特性——Groovy Bean定义DSLSpring4新特性——更好的Java泛型操作API Spring4新特性——JSR3...2013-12-19 07:33:12 · 323 阅读 · 0 评论 -
Spring4新特性——集成Bean Validation 1.1(JSR-349)到SpringMVC
Spring4新特性——泛型限定式依赖注入Spring4新特性——核心容器的其他改进Spring4新特性——Web开发的增强Spring4新特性——集成Bean Validation 1.1(JSR-349)到SpringMVC Spring4新特性——Groovy Bean定义DSLSpring4新特性——更好的Java泛型操作API Spring4新特性——JSR3...2013-12-16 08:10:39 · 1495 阅读 · 1 评论 -
Spring4新特性——Web开发的增强
Spring4新特性——泛型限定式依赖注入Spring4新特性——核心容器的其他改进Spring4新特性——Web开发的增强Spring4新特性——集成Bean Validation 1.1(JSR-349)到SpringMVC Spring4新特性——Groovy Bean定义DSLSpring4新特性——更好的Java泛型操作API Spring4新特性——JSR3...2013-12-14 08:12:04 · 276 阅读 · 0 评论 -
Spring4新特性——核心容器的其他改进
Spring4新特性——泛型限定式依赖注入Spring4新特性——核心容器的其他改进Spring4新特性——Web开发的增强Spring4新特性——集成Bean Validation 1.1(JSR-349)到SpringMVC Spring4新特性——Groovy Bean定义DSLSpring4新特性——更好的Java泛型操作API Spring4新特性——JSR3...2013-12-14 07:23:37 · 200 阅读 · 0 评论 -
注入FactoryBean失败分析+解决方案
如果有朋友 遇到Spring疑难杂症,小弟愿意帮忙分析及提出解决方案。 通过spring注入FactoryBean时可能会遇到找不到依赖的异常“Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException:”,但是很多朋友会说明明我配置了,怎么找不到呢?或者如果直接从Spring容器去getBean...2013-06-27 05:33:34 · 547 阅读 · 0 评论 -
spring的二次代理原因及如何排查
最近一个朋友使用javamelody时遇到一个二次代理的问题,即一个Bean被代理了两次。 我还原了一下问题,并简化出一个工程方便大家观察。可以下载附件代码还原场景。 代码如下:1、接口及目标类 package com.sishuok.proxy;public interface Interface { public void sayHello();...2013-06-26 06:49:13 · 598 阅读 · 0 评论 -
在应用层通过spring特性解决数据库读写分离
如何配置mysql数据库的主从?单机配置mysql主从:http://my.oschina.net/god/blog/496 常见的解决数据库读写分离有两种方案1、应用层http://neoremind.net/2011/06/spring实现数据库读写分离目前的一些解决方案需要在程序中手动指定数据源,比较麻烦,后边我会通过AOP思想来解决这个问题。 2、中间...2012-11-08 20:31:45 · 182 阅读 · 0 评论 -
在spring中获取代理对象代理的目标对象工具类
昨天晚上一哥们需要获取代理对象的目标对象,查找了文档发现没有相应的工具类,因此自己写了一个分享给大家。能获取JDK动态代理/CGLIB代理对象代理的目标对象。 问题描述:: 我现在遇到个棘手的问题,要通过spring托管的service类保存对象,这个类是通过反射拿到的,经过实验发现这个类只能反射取得sservice实现了接口的方法,而extends类的方法一律不出...2012-07-31 11:15:12 · 206 阅读 · 0 评论 -
我对AOP的理解
1、问题 问题:想要添加日志记录、性能监控、安全监测 2、最初解决方案 2.1、最初解决方案缺点:太多重复代码,且紧耦合 2.2、抽象类进行共性设计,子类进行个性设计,此处不讲解,缺点一荣俱荣,一损俱损 2.3、使用装饰器模式/代理模式改进的解决方案装饰器模式:动态地给一个对象添加一些额外的职责。就增加功能来说, 装饰器模式相比生成子类...2012-04-05 12:57:18 · 509 阅读 · 0 评论 -
我对IoC/DI的理解
IoC IoC: Inversion of Control,控制反转, 控制权从应用程序转移到框架(如IoC容器),是框架共有特性 1、为什么需要IoC容器1.1、应用程序主动控制对象的实例化及依赖装配 A a = new AImpl();B b = new BImpl();a.setB(b);本质:创建对象,主动实例化,直接获取依赖,...2012-03-31 21:20:25 · 205 阅读 · 0 评论 -
SpringMVC + spring3.1.1 + hibernate4.1.0 集成及常见问题总结
下载地址一 开发环境1、动态web工程2、部分依赖 java代码:hibernate-release-4.1.0.Final.ziphibernate-validator-4.2.0.Final.jarspring-framework-3.1.1.RELEASE-with-docs.zipproxool-0.9.1.jarlog4j 1.2.1...原创 2012-02-26 14:06:23 · 288 阅读 · 0 评论 -
»Spring 之AOP AspectJ切入点语法详解(最全了,不需要再去其他地找了)
6.5 AspectJ切入点语法详解6.5.1 Spring AOP支持的AspectJ切入点指示符 切入点指示符用来指示切入点表达式目的,,在Spring AOP中目前只有执行方法这一个连接点,Spring AOP支持的AspectJ切入点指示符如下: execution:用于匹配方法执行的连接点; wi...2012-02-21 14:42:55 · 6934 阅读 · 2 评论 -
@Value注入Properties 使用错误的案例
最近有朋友问@Value注入Properties数据注入不进去,接下来我就分析一下为什么。 场景:需要注入Properties的value数据到Bean或方法参数。 准备数据: <bean id="props" class="java.util.Properties"> <constructor-arg index="0">...2012-10-23 15:59:44 · 217 阅读 · 0 评论 -
不重复配置——利用Spring通用化配置
还记得 如下这种配置吗: 1、struts2作用域:每一个Action我们必须设置scope为prototype 每次都做重复的配置,而且有时候忘记配置还会出现bug,想不想删掉它? <bean id="**Action" class="***Action" scope="prototype"> 2、在使用spring集成hibernate时,每次都必须注入...2012-10-16 18:12:38 · 160 阅读 · 0 评论 -
基于JDK动态代理和CGLIB动态代理的实现Spring注解管理事务(@Trasactional)到底有什么区别。...
基于JDK动态代理和CGLIB动态代理的实现Spring注解管理事务(@Trasactional)到底有什么区别。我还是喜欢基于Schema风格的Spring事务管理,但也有很多人在用基于@Trasactional注解的事务管理,但在通过基于JDK动态代理和CGLIB动态代理的实现Spring注解管理事务是有区别的,我们接下来看看到底有哪些区别。 一、基础工作...2012-05-02 22:41:08 · 263 阅读 · 0 评论 -
Spring对事务管理的支持的发展历程(基础篇)
1、问题Connection conn = DataSourceUtils.getConnection(); //开启事务conn.setAutoCommit(false);try { Object retVal = callback.doInConnection(conn); conn.commit(); ...2012-04-24 16:44:27 · 88 阅读 · 0 评论 -
Shiro+Struts2+Spring3 加上@RequiresPermissions 后@Autowired失效
今天一iteye网页在问答频道提问【Shiro+Struts2+Spring3 加上@RequiresPermissions 后@Autowired失效】,记录一下。 问题: @ParentPackage("all") @Namespace("/project") public class ProjectAction extends BaseAction { pub...2013-04-19 20:34:53 · 324 阅读 · 0 评论 -
Spring事务不起作用 问题汇总
总有很多朋友询问spring事务不起作用怎么回事,这里我汇总下,欢迎补充: 1、首先使用如下代码 确认你的bean 是代理对象吗?AopUtils.isAopProxy()AopUtils.isCglibProxy() //cglibAopUtils.isJdkDynamicProxy() //jdk动态代理 如果不是 那么就是切入点配置出错了 或者如果你使用了sp...2013-04-19 21:11:27 · 611 阅读 · 0 评论 -
Spring事务处理时自我调用的解决方案及一些实现方式的风险
前些日子一朋友在需要在目标对象中进行自我调用,且需要实施相应的事务定义,且网上的一种通过BeanPostProcessor的解决方案是存在问题的。因此专门写此篇帖子分析why。1、预备知识aop概念请参考【http://www.iteye.com/topic/1122401】和【http://jinnianshilongnian.iteye.com/blog/1418596】...2012-04-16 08:18:49 · 175 阅读 · 0 评论 -
如何为spring代理类设置属性值
在问答频道 有朋友问《如何为spring代理类设置属性值》 就写了个小工具 供使用。思想就不讲了。现在有一个bean包含了私有属性,如下:Java代码 @Component public class Bean { String name; public String getName() { ...2012-09-14 17:33:40 · 300 阅读 · 0 评论