Arganzheng's Blog

stay hungry, stay foolish

Spring的Bean Scopes实现机制源码剖析

关于Spring的bean scopes,在我的上一篇文章 Spring的Bean Scopes 已经做了详细的介绍,这里我们探讨一下Spring的bean scopes底层是怎么实现的。 通过下面这行简单的配置: <bean class="me.arganzheng.study.scope.FooUser" scope="request"> <aop:scoped-...

JUnit与Spring的整合——JUnit中的TestCase如何拥有spring的事务管理机制

问题 很多时候我们不希望单元测试的结果玷污了数据库,玷污了我们也不希望人肉去check,我们希望它无痕迹的悄悄执行,告诉我最终结果即可。那么怎样让你的UT也具有事务功能呢? 预期效果 我们希望能够达到这样的效果: package me.arganzheng.study; import static org.junit.Assert.*; import org.junit.Test;...

Spring与web MVC的整合——Spring的应用上下文管理

问题1 如何让web容器加载你的web MVC框架 对于基于servlet的web容器来说,遵循的是servlet规范,入口配置文件是web.xml。这类web容器会在启动的时候会而且仅会加载如下三种类型的对象: servlet context listener filter 而且有一定的加载和销毁顺序! Loading Servlets, Context Li...

创建可执行的jar包

今天打算将Swing桌面程序打包成一个可以执行的jar包发布,方便用户使用。 可执行的jar包其实原理很简单,就是在jar包的manifest文件中用Main-Class标明你的应用程序入口: Main-Class: classname。其中classname是类的全路径名,不包含.class后缀,跟Spring的配置一样。 然后你就可以直接鼠标双击该jar包,或者在命令行中执行如下命令启...

JUnit与Spring的整合——JUnit的TestCase如何自动注入Spring容器托管的对象

问题 在Java中,一般使用JUnit作为单元测试框架,测试的对象一般是Service和DAO,也可能是RemoteService和Controller。所有这些测试对象基本都是Spring托管的,不会直接new出来。而每个TestCase类却是由JUnit创建的。如何在每个TestCase实例中注入这些依赖呢? 预期效果 我们希望能够达到这样的效果: package me.arga...

Quartz与Spring的整合-使用Spring的FactoryBean实现动态Properties

问题 每个Quartz调度器实例都需要有一个标识,这是在配置org.springframework.scheduling.quartz.SchedulerFactoryBean的时候配置进去的。例如: <?xml version="1.0" encoding="GBK"?> <beans xmlns="http://www.springframework.org/sch...

Quartz与Spring的整合-Quartz中的job如何自动注入spring容器托管的对象

问题 Quartz中的job是由Quartz框架动态创建的(配置该job的classname,通过反射创建),而job一般会依赖到配置在spring中的bean,怎样获取或者更好的自动注入这些依赖bean呢? 预期效果 我们希望达到这样的效果: /** * * 取消超时未支付订单的任务。 * * @author arganzheng */ public class Ca...

解决Ant编译乱码问题

今天在用ant编译一个老的java工程,发现第一个遇到的问题就是编码问题。首先是报“警告: 编码 GBK 的不可映射字符” 一看就是典型的采用GBK去解码utf-8文件了。在javac中增加命令行参数-encoding UTF-8就可以解决了。 <target name="compile" description="编译Java文件"> <mkdir d...

Linux下如何备份旧文件

将30天前的文件打包压缩备份,然后删除原文件 今天王岩发了一个shell脚本让大家review一下: mmddnew=`date "+%Y%m%d"` basedir="/data/tomcatlog/api/reconciliationFiles/" echo ${mddnew} cd ${basedir} echo "压缩" find ./ -maxdepth 1 -type f -...

使用Java程序打jar/war包

JDK自带的jar util库。于是可以这么简单封装一下: java.util.jar.JarOutputStream; java.util.zip.ZipOutputStream; package me.arganzheng.study.archive.util; import java.io.BufferedInputStream; import java.io.File; im...