« | August 2025 | » | 日 | 一 | 二 | 三 | 四 | 五 | 六 | | | | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | | | | | | | |
| 公告 |
戒除浮躁,读好书,交益友 |
Blog信息 |
blog名称:邢红瑞的blog 日志总数:523 评论数量:1142 留言数量:0 访问次数:9691784 建立时间:2004年12月20日 |

| |
[java语言]深入浅出 spring AOP (二) 原创空间, 软件技术
邢红瑞 发表于 2005/11/19 18:11:12 |
有人问我,为什末使用CGLIB proxy而不使用JDK Dynamic Proxies,这和spring aop使用的原则相关。
1.使用AOP的时候,尽可能的使用接口,而不是使用具体的类,这样就可以使用JDK Dynamic Proxies,
如果目标类没有实现接口,spring使用CGLIB生成目标类的子类。
下面给个例子
接口类
package org.tatan.test;
public interface Worker {
void doSomeWork(int numOfTimes);
}
目标类
package org.tatan.test;
public class WorkerBean implements Worker { |
|
[java语言]深入浅出 spring AOP (一) 原创空间, 软件技术
邢红瑞 发表于 2005/11/13 14:09:02 |
先不讨论AOP的各种名词,也不作各种AOP的比较,我将在例子中介绍各种名词。 1。先写一个javabean,就是target object。 package org.tatan.test;
public class MessageBean { public void write() { System.out.print("AOP example"); } } 2。写一个AOP的advice类 MethodInterceptor是AOP联盟的标准接口,它是最简单最实用的连接点(joinpoint),实现了around advice ,你可以在他返回前调用target的方法。 package org.tatan.test; import org.aopalliance.intercept.MethodInterceptor; import or |
|
[java语言]spring JdbcTemplate 的queryForObject的若干问题 原创空间, 软件技术
邢红瑞 发表于 2005/11/12 15:33:39 |
spring的javadoc上讲getObject(String, Object[], Class) will return NULL if the result of the query is NUL 这里有0行和nullresult的区别 0行: select salary from user where 1 = 2 null result: select max(salary) from user where 1 = 2 返回就是null 0行一定抛出IncorrectResultSizeDataAccessException异常 原因如下 ResultSetMetaData rsmd = rs.getMetaData(); int nrOfColumns = rsmd.getColumnCount();这里返回ResultSet的列数 if (nrOfColumns != 1) { throw new Incor |
|
[java语言]执行的Runtime类调用程序停掉的原因 文章收藏, 软件技术
邢红瑞 发表于 2005/11/6 14:40:39 |
牛牛发现问题的原因,Process process=Runtime.getRuntime().exec("");中产生停滞(阻塞,blocking)。
这个是因为Runtime.getRuntime().exec()要自己去处理stdout和stderr的。 所以如果你想让程序正常运行的话,请务必将上述用别的线程流取走。 >test.bat haha exit 99 >RuntimeTest.java public class RuntimeTest { public static void main(String[] arg |
|
[java语言]spring下的各种连接池的比较 原创空间, 软件技术
邢红瑞 发表于 2005/11/5 16:30:26 |
hibernate开发组推荐c3p0,spring开发组推荐dbcp,但是dbcp连接池有weblogic连接池同样的问题,就是强行关闭连接或数据库重启后,无法 reconnect ,告诉连接被重置,这个设置可以解决。hibernate in action推荐c3p0和proxool。
我推荐proxool,因为他不但可以监控后台。还可以有效的释放连接。在connection close时,也就是归还connection, 关闭所有的statement,并且判断是否autocommit,如果不行,就rollback,并且设置true, 可以参考proxool的org.logicalcobwebs.proxool.ConnectionResetter类 connection pool把connection reset置回initial state。 dbcp的配置 <bean id="dataSource" class="org.apache.commons.dbcp.BasicData |
|
[java语言]spring的SimpleFormController处理get请求 原创空间, 软件技术
邢红瑞 发表于 2005/10/29 15:42:04 |
SimpleFormController不接受get请求的提交,如果一个GET请求被提交,必须重载isFormSubmission, 返回true,(通过hidden field 或 submit button name判断是否提交) 对于get请求参数的处理,initBinder()方法中检查所有必填字段,使用binder.setRequiredFields检查字段名称 也可以重载onBindOnNewForm(),处理可能方便些 |
|
[java语言]spring的servlet beanfactory配置文件的加载 原创空间, 软件技术
邢红瑞 发表于 2005/10/22 10:29:44 |
spring的-servlet.xml一般放在WEB-INF下,如果放在/WEB-INF/classes下加载时正常,运行时出错 例如web.xml的定义 <context-param> <param-name> contextConfigLocation </param-name> <param-value> /WEB-INF/classes/com/hua/bar/hua-servlet.xml </param-value> </context-param> 这是contextConfigLocation是在ContextLoaderListener或 ContextLoaderServlet加载root application context时的配置 应该改变默认DispatcherServlet的位置, <servlet>
|
|
[java语言]spring的interceptors进行参数判断 原创空间, 软件技术
邢红瑞 发表于 2005/10/16 20:08:36 |
spring的interceptors功能很强大,主要是进行安全管理,做一个判断参数的小例子,抛砖引玉吧
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
/** * * @author xing */ public class AccessInterceptor extends HandlerInterceptorAdapter { /** Creates a new instance of AccessInterceptor */ public Access |
|
[java语言]spring如何处理多选框 文章收藏, 软件技术
邢红瑞 发表于 2005/10/12 13:41:00 |
写一个propertyEditor ,可以解决有效的解决这个问题 import org.springframework.util.StringUtils; import org.springframework.util.NumberUtils;
import java.beans.PropertyEditorSupport; import java.util.*; import java.text.NumberFormat;
/** * 使用了 CustomNumberEditor *可以转换以逗号分隔的List. *允许用户自己定义数据格式 * */ public class CollectionOfNumbersEditor extends PropertyEditorSupport { private final Class numberClass; |
|
|