jboot 1.0-beta3 发布,基于 Jfinal 类似 SpringBoot 的框架 - 开源中国社区
Float_left Icon_close
jboot 1.0-beta3 发布,基于 Jfinal 类似 SpringBoot 的框架
理工男海哥 2017年08月01日

jboot 1.0-beta3 发布,基于 Jfinal 类似 SpringBoot 的框架

理工男海哥 理工男海哥 发布于2017年08月01日 收藏 22

【腾讯云】0基础建站 网站模板9元起! >>>  

Jboot发新版本了,具体地址:https://git.oschina.net/fuhai/jboot , 此版本没有新增功能,主要是bug修复的版本。

jboot 1.0-beta3 changes更新如下:

1、修复使用@Inject自动注入后,再使用JFinal的@Before(Tx.Class)会出现空指针的问题。
2、修复读取配置文件的时候,同一个Class对于不同的配置信息读取不到的问题。
3、修复多数据源的时候,读取数据源解析错误的问题。
4、修复readme文档编写错误的问题。
5、修复当有JbootAppListener监听器的时候,JbootAppListenerManager无法初始化的问题。

多数据源支持使用如下:

1、配置住数据源

jboot.datasource.type=
jboot.datasource.url=
jboot.datasource.user=
jboot.datasource.password=
jboot.datasource.driverClassName=

2、配置其他数据源

jboot.datasource.a1.type=
jboot.datasource.a1.url=
jboot.datasource.a1.user=
jboot.datasource.a1.password=
jboot.datasource.a1.driverClassName=

jboot.datasource.b2.type=
jboot.datasource.b2.url=
jboot.datasource.b2.user=
jboot.datasource.b2.password=
jboot.datasource.b2.driverClassName=

jboot.datasource.xxx.type=
jboot.datasource.xxx.url=
jboot.datasource.xxx.user=
jboot.datasource.xxx.password=
jboot.datasource.xxx.driverClassName=

以上配置是配置了a1、b2、xxx 三个不同的数据源,在使用Jfinal(或Jboot)进行数据操作的时候,只需在model中使用use指定数据源即可,例如:

UserModel user = new UserModel();
user.setUserName(“michael”);
user.serPassword(“123456”);

user.use(“a1”).save();//使用数据源a1进行保存
user.use(“b2”).save();//使用数据源b2进行保存
user.use(“xxx”).save();//使用数据源xxx进行保存

更多关于多数据源的使用,请参考Jfinal的帮助文档。

JbootRedisLock的分布式锁使用如下:

代码:

JbootRedisLock lock = new JbootRedisLock("lockName");
lock.runIfAcquired(new Runnable(){

	@Override 
	public void run() {
 		//do your something
	}
});

在分布式项目中,在并发高峰的时候,对于同一个lockName,只会有一个Runnable在执行,其他执行到这部分的时候,会直接跳过。

若想让其他分布式项目(或者并发线程)在这部分等待,则需要指定等待时间,初始化JbootRedisLock的代码修改如下:

JbootRedisLock lock = new JbootRedisLock("lockName”,1000*10);
lock.runIfAcquired(new Runnable(){

	@Override 
	public void run() {
 		//do your something
	}
});

这个锁会等待10秒,在10秒内能获得锁就执行Runnable代码,得不到就跳过。

虽然jboot还没有发布1.0正式版,但是基于Jfinal多年稳定的框架基础上,bug已经非常之少,同时已经有很多的商业项目在使用jboot进行开发,遇到问题在QQ群反馈一般情况下也都会当天修复,所以小伙伴可以放心愉快的使用,你会感受到前所未有的快感。

Jboot,专为大型分布式项目和微服务而生,欢迎评论、批评和指导。

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区。
转载请注明:文章转载自 开源中国社区 [http://www.oschina.net]
本文标题:jboot 1.0-beta3 发布,基于 Jfinal 类似 SpringBoot 的框架
分享
评论(21)
精彩评论
3
后期会成立俱乐部吗?
1
板凳
1
这轮子造的也是6
1
:thumbsup::thumbsup:。
1
沙发
最新评论
0

引用来自“Jekey”的评论

配了个简单的mysql数据源,就启动不起来了,你确定demo教程没问题?
io.jboot.db.JbootDbManager error
严重: cannot new newInstance!!!!
java.lang.NullPointerException
  at io.jboot.web.JbootAppConfig.configPlugin(JbootAppConfig.java:159)
  at com.jfinal.core.Config.configJFinal(Config.java:53)
  at com.jfinal.core.JFinal.init(JFinal.java:63)
  at com.jfinal.core.JFinalFilter.init(JFinalFilter.java:49)
  at io.undertow.servlet.core.LifecyleInterceptorInvocation.proceed(LifecyleInterceptorInvocation.java:111)
  at io.undertow.servlet.core.ManagedFilter.createFilter(ManagedFilter.java:80)
  at io.undertow.servlet.core.DeploymentManagerImpl$2.call(DeploymentManagerImpl.java:564)
  at io.undertow.servlet.core.DeploymentManagerImpl$2.call(DeploymentManagerImpl.java:529)

引用来自“michaely”的评论

如何配置?

引用来自“Jekey”的评论

jboot.datasource.type=mysql
jboot.datasource.url=jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf8&autoReconnect=true&rewriteBatchedStatements=TRUE
jboot.datasource.user=root
jboot.datasource.password=888888

引用来自“michaely”的评论

配置没问题,你用jboot哪个版本?是否是最新的 1.0-beta3

引用来自“Jekey”的评论

是的,跟踪时问题出在了这里
JbootDbManager 类的
private ActiveRecordPlugin createRecordPlugin(String configName, String configTable, DataSource dataSource) {

List<Class<Model>> modelClassList = ClassScanner.scanSubClass(Model.class);

if (ArrayUtils.isNullOrEmpty(modelClassList)) {
return null;
}
modelClassList 没拿到东西,返回了空

引用来自“michaely”的评论

你没写model ?

引用来自“Jekey”的评论

是没写model,不写model直接用record操作数据,即使不写model,系统也要正常启动好吧。
是的,已经确认,jboot确实存在在没有model的情况下会出现空指针的问题,已经修复: https://git.oschina.net/fuhai/jboot/commit/3f9b38f84a62799d4baa0092c98c11fa18bd20e9 ,下周1会再发布新的版本,谢谢反馈。
0

引用来自“Jekey”的评论

配了个简单的mysql数据源,就启动不起来了,你确定demo教程没问题?
io.jboot.db.JbootDbManager error
严重: cannot new newInstance!!!!
java.lang.NullPointerException
  at io.jboot.web.JbootAppConfig.configPlugin(JbootAppConfig.java:159)
  at com.jfinal.core.Config.configJFinal(Config.java:53)
  at com.jfinal.core.JFinal.init(JFinal.java:63)
  at com.jfinal.core.JFinalFilter.init(JFinalFilter.java:49)
  at io.undertow.servlet.core.LifecyleInterceptorInvocation.proceed(LifecyleInterceptorInvocation.java:111)
  at io.undertow.servlet.core.ManagedFilter.createFilter(ManagedFilter.java:80)
  at io.undertow.servlet.core.DeploymentManagerImpl$2.call(DeploymentManagerImpl.java:564)
  at io.undertow.servlet.core.DeploymentManagerImpl$2.call(DeploymentManagerImpl.java:529)

引用来自“michaely”的评论

如何配置?

引用来自“Jekey”的评论

jboot.datasource.type=mysql
jboot.datasource.url=jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf8&autoReconnect=true&rewriteBatchedStatements=TRUE
jboot.datasource.user=root
jboot.datasource.password=888888

引用来自“michaely”的评论

配置没问题,你用jboot哪个版本?是否是最新的 1.0-beta3

引用来自“Jekey”的评论

是的,跟踪时问题出在了这里
JbootDbManager 类的
private ActiveRecordPlugin createRecordPlugin(String configName, String configTable, DataSource dataSource) {

List<Class<Model>> modelClassList = ClassScanner.scanSubClass(Model.class);

if (ArrayUtils.isNullOrEmpty(modelClassList)) {
return null;
}
modelClassList 没拿到东西,返回了空

引用来自“michaely”的评论

你没写model ?
是没写model,不写model直接用record操作数据,即使不写model,系统也要正常启动好吧。
0

引用来自“Jekey”的评论

配了个简单的mysql数据源,就启动不起来了,你确定demo教程没问题?
io.jboot.db.JbootDbManager error
严重: cannot new newInstance!!!!
java.lang.NullPointerException
  at io.jboot.web.JbootAppConfig.configPlugin(JbootAppConfig.java:159)
  at com.jfinal.core.Config.configJFinal(Config.java:53)
  at com.jfinal.core.JFinal.init(JFinal.java:63)
  at com.jfinal.core.JFinalFilter.init(JFinalFilter.java:49)
  at io.undertow.servlet.core.LifecyleInterceptorInvocation.proceed(LifecyleInterceptorInvocation.java:111)
  at io.undertow.servlet.core.ManagedFilter.createFilter(ManagedFilter.java:80)
  at io.undertow.servlet.core.DeploymentManagerImpl$2.call(DeploymentManagerImpl.java:564)
  at io.undertow.servlet.core.DeploymentManagerImpl$2.call(DeploymentManagerImpl.java:529)

引用来自“michaely”的评论

如何配置?

引用来自“Jekey”的评论

jboot.datasource.type=mysql
jboot.datasource.url=jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf8&autoReconnect=true&rewriteBatchedStatements=TRUE
jboot.datasource.user=root
jboot.datasource.password=888888

引用来自“michaely”的评论

配置没问题,你用jboot哪个版本?是否是最新的 1.0-beta3

引用来自“Jekey”的评论

是的,跟踪时问题出在了这里
JbootDbManager 类的
private ActiveRecordPlugin createRecordPlugin(String configName, String configTable, DataSource dataSource) {

List<Class<Model>> modelClassList = ClassScanner.scanSubClass(Model.class);

if (ArrayUtils.isNullOrEmpty(modelClassList)) {
return null;
}
modelClassList 没拿到东西,返回了空
你没写model ?
0

引用来自“Jekey”的评论

配了个简单的mysql数据源,就启动不起来了,你确定demo教程没问题?
io.jboot.db.JbootDbManager error
严重: cannot new newInstance!!!!
java.lang.NullPointerException
  at io.jboot.web.JbootAppConfig.configPlugin(JbootAppConfig.java:159)
  at com.jfinal.core.Config.configJFinal(Config.java:53)
  at com.jfinal.core.JFinal.init(JFinal.java:63)
  at com.jfinal.core.JFinalFilter.init(JFinalFilter.java:49)
  at io.undertow.servlet.core.LifecyleInterceptorInvocation.proceed(LifecyleInterceptorInvocation.java:111)
  at io.undertow.servlet.core.ManagedFilter.createFilter(ManagedFilter.java:80)
  at io.undertow.servlet.core.DeploymentManagerImpl$2.call(DeploymentManagerImpl.java:564)
  at io.undertow.servlet.core.DeploymentManagerImpl$2.call(DeploymentManagerImpl.java:529)

引用来自“michaely”的评论

如何配置?

引用来自“Jekey”的评论

jboot.datasource.type=mysql
jboot.datasource.url=jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf8&autoReconnect=true&rewriteBatchedStatements=TRUE
jboot.datasource.user=root
jboot.datasource.password=888888

引用来自“michaely”的评论

配置没问题,你用jboot哪个版本?是否是最新的 1.0-beta3
是的,跟踪时问题出在了这里
JbootDbManager 类的
private ActiveRecordPlugin createRecordPlugin(String configName, String configTable, DataSource dataSource) {

List<Class<Model>> modelClassList = ClassScanner.scanSubClass(Model.class);

if (ArrayUtils.isNullOrEmpty(modelClassList)) {
return null;
}
modelClassList 没拿到东西,返回了空
0

引用来自“Jekey”的评论

配了个简单的mysql数据源,就启动不起来了,你确定demo教程没问题?
io.jboot.db.JbootDbManager error
严重: cannot new newInstance!!!!
java.lang.NullPointerException
  at io.jboot.web.JbootAppConfig.configPlugin(JbootAppConfig.java:159)
  at com.jfinal.core.Config.configJFinal(Config.java:53)
  at com.jfinal.core.JFinal.init(JFinal.java:63)
  at com.jfinal.core.JFinalFilter.init(JFinalFilter.java:49)
  at io.undertow.servlet.core.LifecyleInterceptorInvocation.proceed(LifecyleInterceptorInvocation.java:111)
  at io.undertow.servlet.core.ManagedFilter.createFilter(ManagedFilter.java:80)
  at io.undertow.servlet.core.DeploymentManagerImpl$2.call(DeploymentManagerImpl.java:564)
  at io.undertow.servlet.core.DeploymentManagerImpl$2.call(DeploymentManagerImpl.java:529)

引用来自“michaely”的评论

如何配置?

引用来自“Jekey”的评论

jboot.datasource.type=mysql
jboot.datasource.url=jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf8&autoReconnect=true&rewriteBatchedStatements=TRUE
jboot.datasource.user=root
jboot.datasource.password=888888
配置没问题,你用jboot哪个版本?是否是最新的 1.0-beta3
0

引用来自“Jekey”的评论

配了个简单的mysql数据源,就启动不起来了,你确定demo教程没问题?
io.jboot.db.JbootDbManager error
严重: cannot new newInstance!!!!
java.lang.NullPointerException
  at io.jboot.web.JbootAppConfig.configPlugin(JbootAppConfig.java:159)
  at com.jfinal.core.Config.configJFinal(Config.java:53)
  at com.jfinal.core.JFinal.init(JFinal.java:63)
  at com.jfinal.core.JFinalFilter.init(JFinalFilter.java:49)
  at io.undertow.servlet.core.LifecyleInterceptorInvocation.proceed(LifecyleInterceptorInvocation.java:111)
  at io.undertow.servlet.core.ManagedFilter.createFilter(ManagedFilter.java:80)
  at io.undertow.servlet.core.DeploymentManagerImpl$2.call(DeploymentManagerImpl.java:564)
  at io.undertow.servlet.core.DeploymentManagerImpl$2.call(DeploymentManagerImpl.java:529)

引用来自“michaely”的评论

如何配置?
jboot.datasource.type=mysql
jboot.datasource.url=jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf8&autoReconnect=true&rewriteBatchedStatements=TRUE
jboot.datasource.user=root
jboot.datasource.password=888888
0

引用来自“Jekey”的评论

配了个简单的mysql数据源,就启动不起来了,你确定demo教程没问题?
io.jboot.db.JbootDbManager error
严重: cannot new newInstance!!!!
java.lang.NullPointerException
  at io.jboot.web.JbootAppConfig.configPlugin(JbootAppConfig.java:159)
  at com.jfinal.core.Config.configJFinal(Config.java:53)
  at com.jfinal.core.JFinal.init(JFinal.java:63)
  at com.jfinal.core.JFinalFilter.init(JFinalFilter.java:49)
  at io.undertow.servlet.core.LifecyleInterceptorInvocation.proceed(LifecyleInterceptorInvocation.java:111)
  at io.undertow.servlet.core.ManagedFilter.createFilter(ManagedFilter.java:80)
  at io.undertow.servlet.core.DeploymentManagerImpl$2.call(DeploymentManagerImpl.java:564)
  at io.undertow.servlet.core.DeploymentManagerImpl$2.call(DeploymentManagerImpl.java:529)
如何配置?
0
配了个简单的mysql数据源,就启动不起来了,你确定demo教程没问题?
io.jboot.db.JbootDbManager error
严重: cannot new newInstance!!!!
java.lang.NullPointerException
  at io.jboot.web.JbootAppConfig.configPlugin(JbootAppConfig.java:159)
  at com.jfinal.core.Config.configJFinal(Config.java:53)
  at com.jfinal.core.JFinal.init(JFinal.java:63)
  at com.jfinal.core.JFinalFilter.init(JFinalFilter.java:49)
  at io.undertow.servlet.core.LifecyleInterceptorInvocation.proceed(LifecyleInterceptorInvocation.java:111)
  at io.undertow.servlet.core.ManagedFilter.createFilter(ManagedFilter.java:80)
  at io.undertow.servlet.core.DeploymentManagerImpl$2.call(DeploymentManagerImpl.java:564)
  at io.undertow.servlet.core.DeploymentManagerImpl$2.call(DeploymentManagerImpl.java:529)
0
666
0
:+1::thumbsup:
0
说得好,我选择springboot
0
同时已经有很多的商业项目在使用jboot进行开发 ?有没有用的举手?
3
后期会成立俱乐部吗?
1
板凳
1
这轮子造的也是6
1
:thumbsup::thumbsup:。
1
沙发
0
席梦思
1
支持一下
1
板凳..
顶部