开发框架搭建考量( 三 )


}
}
}
return sql.toString();
}
转换类处理逻辑:

public class JsonTypeHandler<T> extends BaseTypeHandler<T> {
private static final Gson gson = new Gson();
private Class<T> clazz;
public JsonTypeHandler(Class<T> clazz) {
if (clazz == null) {
throw new IllegalArgumentException("Type argument cannot be null");
} else {
this.clazz = clazz;
}
}
public void setNonNullParameter(PreparedStatement ps, int i, T parameter, JdbcType jdbcType) throws SQLException {
ps.setString(i, this.toJson(parameter));
}
public T getNullableResult(ResultSet rs, String columnName) throws SQLException {
return this.toObject(rs.getString(columnName), this.clazz);
}
public T getNullableResult(ResultSet rs, int columnIndex) throws SQLException {
return this.toObject(rs.getString(columnIndex), this.clazz);
}
public T getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {
return this.toObject(cs.getString(columnIndex), this.clazz);
}
private String toJson(T object) {
try {
return object instanceof String ? (String)object : gson.toJson(object);
} catch (Exception var3) {
throw new RuntimeException(var3);
}
}
private T toObject(String content, Class<?> clazz) {
if (content != null && !content.isEmpty()) {
try {
return clazz == String.class ? content : gson.fromJson(content, clazz);
} catch (Exception var4) {
throw new RuntimeException(var4);
}
} else {
return null;
}
}
}
公共代码统一化对于多个项目中使用到的代码,需要根据场景进行公共化统一管理,避免公共代码散落在各个服务中,难以维护 。
根据场景的不同,可以有几种管理方式:
  • 基于公共jar包的管理
  • 基于git源代码的管理
  • 基于公共服务的管理
基于公共jar包的管理此方案是最常规的方案,如果几个服务中使用到了公共的代码,比如:一些工具类 。这种情况下就可以将这些类独立为公共项目,通过jar包的方式来进行管理 。
基于git源代码的管理如果公共的代码修改频率比较高,可以基于git的subtree来处理公共代码的管理问题 。
  • 创建一个项目,用于存放需要公用的代码,正常创建即可
  • 在需要使用同步代码的项目中执行如下命令(只需要执行一次):
# module是取的别名
git remote add -f module ${上面的项目git地址}
# 将这个项目拉取到 src/module目录下
git subtree add --prefix=src/module module master --squash
  • 在公共项目中修改模块代码后,正常push即可
  • 需要同步的项目,执行如下命令(如果需要同步共享代码,则执行):
git subtree pull --prefix=src/module module master

开发框架搭建考量

文章插图
 
基于公共服务的管理如果公用的逻辑是一个独立的功能,后续可以作为服务对外提供服务 。那可以考虑将这些代码独立为服务来对外提供服务 。
总结本文从几个维度来考量在搭建一个项目框架时需要考虑的问题,以及对应的解决方案 。

【开发框架搭建考量】


推荐阅读