随笔分类 -  源码学习

摘要:jdbc操作实例代码 //1. 加载驱动 Class.forName("com.mysql.jdbc.Driver"); //2. 获取连接 Connection connection = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/dbName", "userName", "password"); Statement stmt = connection.createStatement();一:加载驱动类 二:获取连接 阅读全文
posted @ 2012-06-28 15:09 ITA之路 阅读(407) 评论(0) 推荐(0)
摘要:ibatis默认提供四种事务 transaction 类图 ExternalTransactionConfig :commit rollbak方法都是个空实现 spring默认使用的这个 UserProvidedTransaction :支持外部Connection 可以和jdbc混合使用 JdbcTransaction :原生jdbc事务 JtaTransaction:分布式事务 TransactionConfig 主要负责创建事务对象 每一个Transaction都有一个TransactionConfig TransactionConfig类图 事务控制实例代码 try { ... 阅读全文
posted @ 2012-06-12 16:58 ITA之路 阅读(187) 评论(0) 推荐(0)
摘要:以SqlMapClientBuilder类的buildSqlMapClient方法为初始化入口初始化过程 主要包括 1.初始化全局配置(sqlMapConfig文件) 事务 DataSource等2.sqlMap 文件初始化 类图 全局配置初始化时序图以SqlMapConfigParser为核心主干 解析SqlMapConfig文件 解析后的值保存的到XmlParserState类中 同时也初始化了SqlMapClientImpl, SqlMapExecutorDelegate等核心类sqlMap文件初始化时序图 sql节点 parameterMap节点 resultMap节点 stat... 阅读全文
posted @ 2012-06-10 21:58 ITA之路 阅读(125) 评论(0) 推荐(0)
摘要:ibatis核心类 SqlMapExecutor:定义了数据库curd操作api SqlMapTransactionManager : 主要定义了事务管理功能 SqlMapClient:继承SqlMapExecutor, SqlMapTransactionManager接口 也就具有curd操作 事务管理行为SqlMapSession:它有SqlMapClient实现接口一样,SqlMapClient的实例中持有SqlMapSession的引用, 也就是说在SqlMapClient的基础上 包装了一层, SqlMapSession 的实例对于SqlMapClient来说是线程安全的 在Sq.. 阅读全文
posted @ 2012-06-10 10:53 ITA之路 阅读(163) 评论(0) 推荐(0)
摘要:Result接口定义public interface Result extends Serializable { public void execute(ActionInvocation invocation) throws Exception; }常用Result类图<result-type name="chain" class="com.opensymphony.xwork2.ActionChainResult"/> <result-type name="dispatcher" class="org.a 阅读全文
posted @ 2012-05-19 22:51 ITA之路 阅读(168) 评论(0) 推荐(0)
摘要:StrutsPrepareAndExecuteFilter doFilter方法为请求的入口doFilter方法主要做以下几件事一: 根据配置的常量 设置当前request 字符编码 response国际化Locale信息二: 创建ActionContext数据对象三: 请求处理 1.分析url 根据url 创建ActionMapping对象 这些操作主要由ActionMapper接口实现类完成 2. 执行请求逻辑动作 ①.根据请求映射对象ActionMapping 创建ActionProxy主要由ActionProxyFactory接口完成 ②.执行Action 逻辑(拦截器,Action. 阅读全文
posted @ 2012-05-17 23:25 ITA之路 阅读(171) 评论(0) 推荐(0)
摘要:ConfigurationProvider接口 主要完成struts配置文件 加载 注册过程ConfigurationProvider接口定义public interface ConfigurationProvider extends ContainerProvider, PackageProvider { } ContainerProvider接口定义/** * 容器加载 注册器 */ public interface ContainerProvider { public void destroy(); /** * 初始化阶段调用 * Xm... 阅读全文
posted @ 2012-05-16 23:59 ITA之路 阅读(174) 评论(0) 推荐(0)
摘要:Container容器接口定义public interface Container extends Serializable { /** * Default dependency name. */ String DEFAULT_NAME = "default"; /** * 对当前对象 执行依赖注入 * 引用了@Inject注解的 方法 字段 构造器 参数 * @param o */ void inject(Object o); /** * 创建实例 然后再依赖注入 */ <T> T inject(Class<T... 阅读全文
posted @ 2012-05-16 18:21 ITA之路 阅读(225) 评论(0) 推荐(0)
摘要:StrutsPrepareAndExecuteFilter实现了Filter接口 init方法为初始化入口StrutsPrepareAndExecuteFilter init方法 public void init(FilterConfig filterConfig) throws ServletException { //初始化辅助类 类似一个Delegate InitOperations init = new InitOperations(); try { // FilterHostConfig 封装了FilterConfig参数对象... 阅读全文
posted @ 2012-05-16 18:19 ITA之路 阅读(311) 评论(0) 推荐(0)
摘要:Hessian客户端主要是通过proxy代理来实现 当客户端调用远程接口方法时 会被HessianProxy 代理 HessianProxy invoke方法主要做以下工作1.把调用的 方法名称 参数 序列化2.通过HttpURLConnection向服务端发送调用请求3.服务端返回的结果 反序列化Proxy是由HessianProxyFactory创建HessianProxyFactory的create方法 public Object create(Class<?> api, URL url, ClassLoader loader) { if (api == null) thro 阅读全文
posted @ 2012-05-12 21:56 ITA之路 阅读(403) 评论(0) 推荐(0)
摘要:Hessian服务端核心对象HessianSkeleton 主要做两件事 1.把客户端请求的流反序列化得到 对应的方法名称 参数2. 服务类(service)对应方法执行完成 把结果序列化到输出流hessian服务端暴露服务是通过HessianServlet public class HessianServlet extends GenericServlet { }HessianServlet的init方法主要初始化服务类(service) 和HessianSkeleton 每一个服务类对应一个HessianSkeleton 在HessianSkeleton中持有业务类的引用 public v 阅读全文
posted @ 2012-05-11 17:19 ITA之路 阅读(314) 评论(0) 推荐(0)
摘要:spring Rmi 客户端是通过 RmiProxyFactoryBean 和它的父类来完成查找远程对象 生成代理对象方法调用RmiProxyFactoryBean 定义public class RmiProxyFactoryBean extends RmiClientInterceptor implements FactoryBean, BeanClassLoaderAware {}父类RmiClientInterceptor定义public class RmiClientInterceptor extends RemoteInvocationBasedAccessor implements 阅读全文
posted @ 2012-03-31 15:27 ITA之路 阅读(696) 评论(0) 推荐(0)
摘要:在SpringBeanFactory容器中管理两种bean1.标准Java Bean2,另一种是工厂Bean, 即实现了FactoryBean接口的bean 它不是一个简单的Bean 而是一个生产或修饰对象生成的工厂Bean在向Spring容器获得bean时 对于标准的java Bean 返回的是类自身的实例 而FactoryBean 其返回的对象不一定是自身类的一个实例,返回的是该工厂Bean的getObject方法所返回的对象一个简单的例子public class SayHelloFactoryBeanImpl implements FactoryBean { /** * 返回该工厂生成. 阅读全文
posted @ 2012-03-30 14:39 ITA之路 阅读(272) 评论(0) 推荐(0)
摘要:Java Rmi 1.接口必须继承java.rmi.Remote接口2.方法必须抛出java.rmi.RemoteException异常Spring Rmi1.可以不实现java.rmi.Remote接口 2.方法可以不抛出异常 问题:在Spring 内部是怎么实现的?在Spring中 是通过org.springframework.remoting.rmi.RmiServiceExporte 在服务端导出一个服务 RmiServiceExporter定义public class RmiServiceExporter extends RmiBasedExporter implements Ini 阅读全文
posted @ 2012-03-29 17:25 ITA之路 阅读(254) 评论(0) 推荐(0)
摘要:spring中 有一大堆Aware结尾接口, 例如BeanFactoryAware, ApplicationContextAware, ServletContextAware等在程序中 我们自定义的bean实现了 Aware相关接口 spring 通过回调 就可以获得一些资源 比如说 我们的bean实现BeanFactoryAware spring会在bean实例化(getBean)阶段 回调该setBeanFactory方法 注入BeanFactory实例(也就是this)spring BeanFactoryAware 接口定义public interface BeanFactoryAwar 阅读全文
posted @ 2012-03-21 15:52 ITA之路 阅读(224) 评论(0) 推荐(0)