jfinal-dreampie 基于 jfinal 的开源框架库开源项目

我要开发同款
匿名用户2014年07月31日
91阅读

技术信息

开源地址
https://github.com/Dreampie/jfinal-dreampie
授权协议
GPL

作品详情

jfial-dreampie是一个基于jfial的开源框架库,主要集成或调优功能如下:

1.缓存维护更细粒度

 @CacheNameRemove(ame = AppCostats.DEFAULT_CACHENAME)@Iherited@Retetio(RetetioPolicy.RUNTIME)@Target({ElemetType.TYPE, ElemetType.METHOD})public @iterface CacheNameRemove {  Strig ame();  Strig[] keys() default {};}//根据key值来移除基于某个特定方法的缓存,而不是移除整个cotroller下的缓存Strig cotrollerKey = ai.getCotrollerKey();    if (!ValidateUtils.me().isNullOrEmpty(removeCacheName)) {      Strig keyPrefix = ull;      if (!ValidateUtils.me().isNullOrEmpty(removeCacheKeys)) {        for (Strig removeKey : removeCacheKeys) {          keyPrefix = cotrollerKey + SLASH + removeKey;          removeByCacheKey(removeCacheName, keyPrefix);        }      } else {        keyPrefix = cotrollerKey;        removeByCacheKey(removeCacheName, keyPrefix);      }    }

2.增加Slf4jLogger实现,然日志配置能基于任何Slf4j下的log实现,如logback

public class Slf4jLogFactory implemets ILoggerFactory

3.基础model实现,实现基础的常用的部分功能用于复用

 public List<M> fidAll() {    retur fid(getSelectSql() + getExceptSelectSql());  }  public List<M> fidBy(Strig where, Object... paras) {    retur fid(getSelectSql() + getExceptSelectSql() + getWhere(where), paras);  }  public List<M> fidTopBy(it topNumber, Strig where, Object... paras) {    retur pagiate(1, topNumber, getSelectSql(), getExceptSelectSql() + getWhere(where), paras).getList();  }  public M fidFirstBy(Strig where, Object... paras) {    retur fidFirst(getSelectSql() + getExceptSelectSql() + getWhere(where), paras);  }  public Page<M> pagiateAll(it pageNumber, it pageSize) {    retur pagiate(pageNumber, pageSize, getSelectSql(), getExceptSelectSql());  }  public Page<M> pagiateBy(it pageNumber, it pageSize, Strig where, Object... paras) {    retur pagiate(pageNumber, pageSize, getSelectSql(), getExceptSelectSql() + getWhere(where), paras);  }  public boolea updateAll(Strig set, Object... paras) {    retur Db.update(getUpdateSql() + getSet(set), paras) > 0;  }  public boolea updateBy(Strig set, Strig where, Object... paras) {    retur Db.update(getUpdateSql() + getSet(set) + getWhere(where), paras) > 0;  }  public boolea deleteAll() {    retur Db.update(getDeleteSql()) > 0;  }  public boolea deleteBy(Strig where, Object... paras) {    retur Db.update(getDeleteSql() + getWhere(where), paras) > 0;  }  public boolea dropAll() {    retur Db.update(getDropSql()) > 0;  }  public boolea dropBy(Strig where, Object... paras) {    retur Db.update(getDropSql() + getWhere(where), paras) > 0;  }

4.akka异步执行框架

public class AkkaPlugi implemets IPlugiAkka.system().scheduler().scheduleOce(Duratio.create(1000, TimeUit.MILLISECONDS),        ew Ruable() {          @Override          public void ru() {            //do Somethig          }        }, Akka.system().dispatcher());

5.atmosphere chatdemo

@MaagedService(path = "/im/{room: [a-zA-Z][a-zA-Z_0-9]*}")public class ChatRoom {}

6.coffeescript compilerplugi,编译coffeescript代码,并监控文件改动重新编译

public class CoffeeScriptPlugi implemets IPlugi {}

7.Flyway数据库自动脚本升级Plugi,用于自动生成或升级数据库,避免不断使用数据库工具修改数据导致的版本问题

public class FlywayPlugi implemets IPlugi {}

8.lesscsscompilerplugi,编译less代码,并监控文件改动重新编译

public class LessCssPlugi implemets IPlugi {}

9.mailer邮件发送plugi,使用akka异步发送邮件

 Akka.system().scheduler().scheduleOce(Duratio.create(1000, TimeUit.MILLISECONDS),        ew Ruable() {          @Override          public void ru() {            MailerCof mailerCof = MailerPlugi.mailerCof;            HtmlEmail htmlEmail = ew HtmlEmail();            htmlEmail.setCharset(mailerCof.getCharset());            htmlEmail.setSocketTimeout(mailerCof.getTimeout());            htmlEmail.setCharset(mailerCof.getEcode());            htmlEmail.setHostName(mailerCof.getHost());            if (!ValidateUtils.me().isNullOrEmpty(mailerCof.getSslport()))              htmlEmail.setSslSmtpPort(mailerCof.getSslport());            if (!ValidateUtils.me().isNullOrEmpty(mailerCof.getPort()))              htmlEmail.setSmtpPort(Iteger.parseIt(mailerCof.getPort()));            htmlEmail.setSSLOCoect(mailerCof.isSsl());            htmlEmail.setStartTLSEabled(mailerCof.isTls());            htmlEmail.setDebug(mailerCof.isDebug());            htmlEmail.setAutheticator(ew DefaultAutheticator(mailerCof.getUser(), mailerCof.getPassword()));            try {              htmlEmail.setFrom(mailerCof.getFrom(), mailerCof.getName());              htmlEmail.setSubject(subject);              htmlEmail.addTo(recipiets);              htmlEmail.setHtmlMsg(body);              // set the alterative message              htmlEmail.setTextMsg("Your email cliet does ot support HTML messages");              if (!ValidateUtils.me().isNullOrEmpty(attachmet))                htmlEmail.attach(attachmet);              htmlEmail.sed();            } catch (EmailExceptio e) {              e.pritStackTrace();            }          }        }, Akka.system().dispatcher());

10.自定义验证码,可以自定义使用字符或者数字,颜色和样式可以自调

public class PatchcaReder exteds Reder {  private static fial Strig CODE_CHAR = "0123456789";}

11.QuartzPlugi使用quartz执行定时任务,参照部分网络实例,简易实现

QuartzFactory.me().startJobOce(TimeUtils.me().toStrig(DateTime.ow()), ++jobId, "stati", this.getClass().getSimpleName(), OrderDataJob.class, param);

12.shiro权限框架,基于数据库url配置过滤,验证码验证

//读取数据库权限只需实现该接口public iterface JdbcAuthzService {  public Map<Strig, AuthzHadler> getJdbcAuthz();}

13.shiro的freemarker标签库

<@shiro.hasPermissio ame="P_USER">                <li><a href="/admi/user">${i18.getText("admi.user")}</a></li>            </@shiro.hasPermissio>

14.xss过滤的StrigEscapeUtils过滤器实现

public class AttackHadler exteds Hadler {  @Override  public void hadle(Strig target, HttpServletRequest request, HttpServletRespose respose, boolea[] isHadled) {    request = ew HttpServletRequestWrapper(request);    extHadler.hadle(target, request, respose, isHadled);  }}

15.jso数据请求时,返回的error信息使用jso字符串

public class JsoErrorRederFactory implemets IErrorRederFactory {  public Reder getReder(it errorCode, Strig view) {    if (ThreadLocalUtil.isJso())      retur ew JsoErrorReder(errorCode, view);    else      retur ew ErrorReder(errorCode, view);  }}

16.自动绑定多数据源的tablebid

AutoMultiSourceTableBidPlugitableBidDefault=ewAutoMultiSourceTableBidPlugi(druidDefault,SimpleNameStyles.LOWER);//让default数据源排除shop目录下的model,因为该目录的model属于custom数据源tableBidDefault.addExcludePaths("c.dreampie.fuctio.shop");AutoMultiSourceTableBidPlugitableBidCustom=ewAutoMultiSourceTableBidPlugi(druidCustom,SimpleNameStyles.LOWER);//让custom只扫描shop目录,注意当使用icludepaths是只会扫描配置的路径,如果没有使用icludepaths会扫描全路径tableBidCustom.addIcludePaths("c.dreampie.fuctio.shop");

17.压缩请求数据的gzipFilter,可测试

<!--gzipcompressfilter--><filter><filter-ame>gzipFilter</filter-ame><filter-class>c.dreampie.commo.web.filter.gzip.GZIPFilter</filter-class></filter><filter-mappig><filter-ame>gzipFilter</filter-ame><url-patter>/*</url-patter><dispatcher>REQUEST</dispatcher><dispatcher>FORWARD</dispatcher><dispatcher>INCLUDE</dispatcher><dispatcher>ERROR</dispatcher></filter-mappig><!--gzipcompressfilter-->

18.http缓存cacheFilter,和gzipFilter共同用于提高用户性能

<!--cachefilter--><filter><filter-ame>cacheFilter</filter-ame><filter-class>c.dreampie.commo.web.filter.cache.CacheFilter</filter-class></filter><filter-mappig><filter-ame>cacheFilter</filter-ame><url-patter>/*</url-patter><dispatcher>REQUEST</dispatcher><dispatcher>FORWARD</dispatcher><dispatcher>INCLUDE</dispatcher><dispatcher>ERROR</dispatcher></filter-mappig><!--cachefilter-->

功能介绍

jfinal-dreampie 是一个基于jfinal的开源框架库,主要集成或调优功能如下: 1.缓存维护更细粒度
 @CacheNameRemove(name = AppConstants...

声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论