Jade 源码阅读

来源:互联网 发布:红楼梦贾迎春知乎 编辑:程序博客网 时间:2024/06/01 07:47

1 Jade入口

在写Jade代码的时候只是写了一个接口,在使用Jade Dao的时候只是写了个spring注入。那么Jade是如何开始它的工作的呢?

Jade调用:

@Autowiredprivate Qixi11DAO qixiDAO;// 注入Dao...qixiDAO.invite(player)// 调用接口...

Jade接口的编写:

@DAO(catalog = "data_source")public interface Qixi11DAO {...@SQL("insert into `qixi_11`(`id`,`to_uid`,`status`,`score`,`favorer_id`,`bridge_flag`,`lightning`)values(:1.id,:1.toUid,:1.status,:1.score,:1.favorerId,:1.bridgeFlag,:1.lightning)ON DUPLICATE KEY UPDATE `status`=:1.status,`score`=:1.score,`favorer_id`=:1.favorerId,`bridge_flag`=:1.bridgeFlag")    public void invite(Qixi11Player qixiPlayer)throws Exception;// Dao接口...
它是通过spring Ioc的初始化,触发Jade事件。

Jade的入口类JadeDaoProcessor,正是通过实现spring的接口BeanFactoryPostProcessor接口,将Jade接口转换成普通类,并注入到Spring Ioc容器中。而JadeDaoProcessor自己则通过将自己在XML中注册进入Spring容器中。

2 Jade的运行过程

3 Jade扫描java类文件

Jade扫描java类文件,分为扫描class文件,以及扫描Jar包。

Jade使用spring提供的类路径扫描工具扫描类。

Enumeration<URL> founds = resourcePatternResolver.getClassLoader().getResources("");

4 Jade注册Jade类到spring容器中

5 Jade获取中间层提供的连接

由于数据库那边经常会对数据库进行优化,比如主库从库处理。所有,应用层这边不可能根据host port username password来获取数据库连接。应用层需要通过数据源来获取连接。中间层提供了这样的服务,来获取连接。

conn = XceAdapter.getInstance().getWriteConnection(bizName, pattern);// 获取主库连接,即写连接             conn = XceAdapter.getInstance().getReadConnection(bizName, pattern);// 获取从库连接,即读连接

由于,每一个数据访问线程,有不同的数据库访问形式,读或者写。jade通过ThreadLocal来保存每个数据库访问线程是读还是写。获取数据源的关键代码在XnDataSource中。公司的ibatis也是通过这种方式获取数据源的。





原创粉丝点击