阅读更多
版本:bbossgroups-3.5
官网http://www.bbossgroups.com
项目博客http://yin-bp.iteye.com/
Sourceforge站点http://sourceforge.net/projects/bboss/files/
Github站点https://github.com/bbossgroups/bbossgroups-3.5

-----------------------------------------------------------------------------------------------

本次版本的主要改进:

  • 本版本及后续版本的源码托管到 github
  • 改进ioc机制,支持循环依赖注入功能,支持类似于C指针引用方式的对象属性引用及任何对象内部局部属性的引用,引用层级不受限制,bboss aop框架逐步成为能够做到该功能的少数几个框架之一。
  • 序列化机制支持复杂对象及对象之间关系(单向引用,双向引用,树结构,网状结构)序列化和恢复功能,使得bboss序列化工具成为少数几个能够实现完全序列化功能的工具之一。
  • 全面改进bbossgroups系列组件中使用的java反射机制,支持asm 4.0,全面改进性能和易用性:aop框架管理的业务对象、mvc控制器方法参数对象、标签展示对象、持久层or mapping对象中属性不再需要定义get/set方法即可完成值得注入和展示、绑定等功能
  • sourceforge 发布文件增加文件distrib.zip文件,包含所有框架发布的jars文件目录和框架完整的可运行的web应用bboss.war
更多的信息如下:
   
一、bboss aop框架更新

●  为了和避免和官方jgroups包冲突,将bboss中的jgroups包路径全部由org.jgroups改为bboss.org.jgroups;jg-magic-map.xml文件名称改为bboss-magic-map.xml;jg-protocol-ids.xml文件名称改为bboss-protocol-ids.xml。

为了避免不必要的麻烦,jgroups.jar包名称暂时没有改,如果存在包名称冲突用户可根据实际情况进行修改名称(一般不需要修改)。

系统管理平台、应用支持平台、数据交换平台、请求服务平台等系统升级框架到3.5时需要注意,升级完毕后需要修改src-sys/com/chinacreator/remote/Utils.java文件中的以下引用路径:
import org.jgroups.Channel;
import org.jgroups.util.RspList;

为:
import bboss.org.jgroups.Channel;
import bboss.org.jgroups.util.RspList;

修改完毕后,将编译好的类文件更新到相应系统的system.jar包中。

●  改进ioc依赖注入机制,支持循环依赖注入功能(之前得版本不支持循环依赖注入),并且支持任何层面的对象引用,引用的定义如下。

1.attr:serviceid:根据服务标识引用容器服务组件
2.attr:serviceid[0]:根据服务标识及数组下标引用容器服务组件对应的下标为0对应的元素(容器服务组件类型为list,set,array三种类型)
3.attr:serviceid[key]:根据服务标识及map key引用容器服务组件对应的索引为key对应的元素(容器服务组件类型为map类型)
4.attr:serviceid{0}:根据服务标识及构造函数参数位置下标引用容器服务组件对应的下标为0对应的构造函数参数(容器服务组件为构造函数注入)
5.attr:serviceid->innerattributename :根据服务标识及服务组件的属性名称引用容器服务组件属性值
6.attr:serviceid->innerattributename[0]:根据服务标识及服务属性名称以及属性数组下标引用容器服务组件属性中对应的下标为0对应的元素(容器服务组件类型为list,set,array三种类型)
7.attr:serviceid->innerattributename[key]:根据服务标识及服务属性名称以及map key引用容器服务组件属性对应的索引为key对应的元素(容器服务组件类型为map类型)
8.attr:serviceid->innerattributename{0}:根据服务标识及服务属性名称对应属性的造函数参数位置下标引用容器服务组件对应的下标为0对应的构造函数参数(容器服务组件为构造函数注入)
其中属性的引用是不限制层级的

●  统一将rpc协议序列化机制切换到bboss的序列化机制。已经完成切换的协议:http,webservice,netty,rmi,mina,jms;未完成的协议(暂不做改进):jgroups

因此采用jgroups协议时,所有的参数数据都要实现序列化接口,其他协议则不需要

●  改进http协议和webservice rpc协议性能,改进反射机制

●  ioc属性注入中相应的属性不再需要set方法

●  引进最新的bboss soa序列化机制,对于static,final,transient类型的属性不进行序列化,对于添加了@ExcludeField的注解不序列化
需要序列化的字段不再需要get/set方法

---------------------------------------------------------------------

二、bboss mvc更新

------2012-2-7------------

●  集合类型(List,Map),如果没有数据记录,则直接返回,修复没有数据情况下返回一条空记录的问题

------2011-12-11------------

●  更新最新的bboss aop框架,控制器需要注入的业务组件不再需要set方法

●  改进以下注解,name或者value属性不再是必须选项,如果没有指定name属性,则使用方法参数名称作为name属性的值:RequestParam、PathVariable、CookieValue、RequestHeader、Attribute

为了确保能够正确获取到mvc控制器方法的参数名称,必须在编译java代码时保证在class文件中生成java本地变量表。eclipse工具默认会生成,ant编译工具也会生成。

同时除了PathVariable注解,以下注解不在是控制器方法参数的必须注解,如果没有指定,基础类型参数将直接用方法名称从request中获取相关属性的值:RequestParam、PathVariable、RequestHeader、Attribute、CookieValue

bboss中界定的基础数据类型如下:String.class,int.class ,Integer.class,long.class,Long.class,java.sql.Timestamp.class,java.sql.Date.class,java.util.Date.class,boolean.class ,Boolean.class,BigFile.class,float.class ,Float.class,short.class ,Short.class,double.class,Double.class,char.class ,Character.class,byte.class ,Byte.class,BigDecimal.class

------2011-11-2------------

●  改进jason转换器,避免和文件下载转换器的冲突

----------------------------------------------------------------------
三、bboss persistent更新

●  解决连接池中无法查找到tomcat 6和weblogic 容器数据源的问题

●  解决sql server jtd驱动无法正确找到DB adaptor的问题

●  PreparedDBUtil增加public void setBlob(int i, String x) throws SQLException 方法,用来直接向blob类型字段中存入字符串

修改TestLob测试用例,用来演示SQLExecutor/ConfigSQLExecutor组件向Blob和clob中插入字符串的方法:
@Test
	public void testNewSQLParamInsert() throws Exception
	{
		SQLParams params = new SQLParams();
		params.addSQLParam("id", "1", SQLParams.STRING);
		// ID,HOST_ID,PLUGIN_ID,CATEGORY_ID,NAME,DESCRIPTION,DATASOURCE_NAME,DRIVER,JDBC_URL,USERNAME,PASSWORD,VALIDATION_QUERY
		params.addSQLParam("blobname", "abcdblob",
				SQLParams.BLOB);
		params.addSQLParam("clobname", "abcdclob",
				SQLParams.CLOB);
		SQLExecutor.insertBean("insert into test(id,blobname,clobname) values(#[id],#[blobname],#[clobname])", params);
	}
	@Test
	public void testNewBeanInsert() throws Exception
	{
		LobBean bean = new LobBean();
		bean.id = "2";
		bean.blobname = "abcdblob";
		bean.clobname = "abcdclob";
		SQLExecutor.insertBean("insert into test(id,blobname,clobname) values(#[id],#[blobname],#[clobname])", bean);
	}

注意如果
public static class LobBean
	{
		private String id;
		@Column(type="blob")//blob会通知持久层框架将属性blobname的值作为数据库blob字段类型进行存储
		private String blobname;
		@Column(type="clob")")//clob会通知持久层框架将属性blobname的值作为数据库clob字段类型进行存储

		private String clobname;
	}
中type分别为blobfile或者clobfile时,就必须要求字段的值类型为以下三种:
1.java.io.File
2.MultipartFile
3.InputStream

例如:
	public static class LobBean
	{
		private String id;
		@Column(type="blobfile")
		private File blobname;
		@Column(type="clobfile")
		private File clobname;
	}

●  SQLExecutor/ConfigSQLExecutor组件增加单字段多记录结果类型为List<String>的查询功能,使用方法如下:
@Test
	public void dynamicquery() throws SQLException
	{
		List<ListBean> result =  SQLExecutor.queryList(ListBean.class,"select id  from LISTBEAN");
		System.out.println(result.size());
		List<String> result_string =  SQLExecutor.queryList(String.class,"select id  from LISTBEAN");
		System.out.println(result_string.size());
		List<Integer> result_int =  SQLExecutor.queryList(Integer.class,"select id  from LISTBEAN");
		 System.out.println(result_int.size());
	}
	
	@Test
	public void dynamicqueryObject() throws SQLException
	{ 
		ListBean result =  SQLExecutor.queryObject(ListBean.class,"select id  from LISTBEAN");
		 System.out.println(result.getId());
		 String result_string =  SQLExecutor.queryObject(String.class,"select id  from LISTBEAN");
		 System.out.println(result_string);
		 int result_int =  SQLExecutor.queryObject(int.class,"select id  from LISTBEAN");
		 System.out.println(result_int);
	}


●  修复执行clob 文件插入操作导致空指针的问题

sql = "INSERT INTO CLOBFILE (FILENAME,FILECONTENT,fileid,FILESIZE) VALUES(#[filename],#[FILECONTENT],#[FILEID],#[FILESIZE])";
			SQLParams sqlparams = new SQLParams();
			sqlparams.addSQLParam("filename", file.getOriginalFilename(), SQLParams.STRING);
			sqlparams.addSQLParam("FILECONTENT", file,SQLParams.CLOBFILE);
			sqlparams.addSQLParam("FILEID", UUID.randomUUID().toString(),SQLParams.STRING);
			sqlparams.addSQLParam("FILESIZE", file.getSize(),SQLParams.LONG);
			SQLExecutor.insertBean(sql, sqlparams);	

●  优化or mapping性能

●  更新最新的frameworkset-util.jar,持久层or mapping机制的bean的属性不再需要get/set方法

●  将动态添加的数据源的removeAbandoned属性设置为false

---------------------------------------------------------------

四、bboss taglib更新

------2011-12-11------------

●  更新最新的frameworkset-util.jar,cell标签读取的bean的属性不再需要get方法

------2011-11-20------------

●  调整jquery-1.4.2.min.js的load方法支持数组参数的传递

●  调整pager.js的loadPageContent方法支持数组参数的传递

●  分页参数传递支持map、bean中包含数据参数传递,支持数组参数传递,通过以下标签实现:

params标签:<pg:params name="userName" />
beanparams标签:<pg:beanparams name="user"/>

如果要使用这两个标签,需要更新以下程序:

/WEB-INF/lib/frameworkset.jar
/include/jquery-1.4.2.min.js
/include/pager.js

同时需要检查pager-taglib.tld中是否定义了一下params标签和beanparams标签:
<!--
		功能说明:为分页列表标签中自动设置的超链接添加参数数组
	-->
	<tag>
		<name>params</name>
		<tagclass>com.frameworkset.common.tag.pager.tags.ParamsTag</tagclass>
		<bodycontent>empty</bodycontent>
		<attribute>
			<name>id</name>
			<rtexprvalue>true</rtexprvalue>
		</attribute>
		<attribute>
			<name>name</name>
			<required>true</required>
			<rtexprvalue>true</rtexprvalue>
		</attribute>
		
		<attribute>
			<name>encode</name>
			<rtexprvalue>true</rtexprvalue>
		</attribute>
	</tag>
	
	
	<!--
		功能说明:为分页列表标签中自动设置的超链接添加参数,参数来自java对象属性或者Map中键值对
	-->
	<tag>
		<name>beanparams</name>
		<tagclass>com.frameworkset.common.tag.pager.tags.BeanParamsTag</tagclass>
		<bodycontent>empty</bodycontent>
		<attribute>
			<name>id</name>
			<rtexprvalue>true</rtexprvalue>
		</attribute>
		<attribute>
			<name>name</name>
			<required>true</required>
			<rtexprvalue>true</rtexprvalue>
		</attribute>
		
		<attribute>
			<name>encode</name>
			<rtexprvalue>true</rtexprvalue>
		</attribute>
	</tag>

------2011-11-18------------

增加params、beanparams标签。

params:为分页列表标签中自动设置的超链接添加参数数组

beanparams:为分页列表标签中自动设置的超链接添加参数,参数来自java对象属性或者Map中键值对

bean属性可以指定com.frameworkset.common.tag.pager.IgnoreParam注解,beanparams标签会忽略带有IgnoreParam注解的属性

------2011-11-2------------

●  修改covert标签空指针异常

-----------------------------------------------------------------

五、bboss util更新

●  ClassInfo对象增加isprimary方法,标识对应的类型是否是bboss定义的基础数据类型范畴

●  增加获取方法参数名称的工具类LocalVariableTableParameterNameDiscoverer

●  获取LocalVariableTableParameterNameDiscoverer的方法如下:

ParameterNameDiscoverer parameterNameDiscoverer = ClassUtil.getParameterNameDiscoverer();


获取方法参数名称的方法如下:

ParameterNameDiscoverer parameterNameDiscoverer = ClassUtil.getParameterNameDiscoverer();
Method method = ClassInfo.class.getMethod("getDeclaredMethod", String.class);
String[] names = parameterNameDiscoverer.getParameterNames(method);

●  内置asm 4.0版本
---------------------------------------------------------------

六、bboss 序列化更新

●  引进序列化机制,对于static,final,transient类型的属性不进行序列化,对于添加了@ExcludeField的注解不序列化
●  对象中序列化的字段不再需要get/set方法
●  支持复杂对象及对象之间关系序列化和恢复功能

6
3
评论 共 28 条 请登录后发表评论
28 楼 caoyangx 2012-02-16 09:03
现在国产的开源框架正在成长,在成长的道路上难免会出现质疑。
nutz、bboss、douyu、jxva、guzz...都是非常不错的框架,只要不收费且可持续发展,大家还有什么好喷的。
收费也骂,免费也骂,做得好也骂,做的差更骂。都是羡慕嫉妒恨,引用郭德纲的一句话,只有同行才是赤裸裸的恨。
27 楼 yin_bp 2012-02-15 20:06
qianye 写道
没用过,小强还顽强存活着。

SMCwwh 写道

..........
在如今Spring如日中天的时候,bbossgroups难发展啊。
还是会下载来用用看。

我们搞bboss并不是要赚钱,我们都有自己的全职工作,完全是出于对开源的爱好,也很高兴把bboss拿出来和大家交流分享,感谢大家的支持。当然我们也希望bboss能够发展壮大起来,能够为国内的开源奉献一点力量,但是我们不会因为bboss发展不起来而不搞bboss了,呵呵,相反我们会一如既往,我们会尽力将bboss做得更好更完善。

26 楼 SMCwwh 2012-02-15 10:58
yin_bp 写道
madbluesky 写道
作者应该强调一下跟spring比较,bboss框架的不同点、亮点在哪,解决了哪些spring或其他框架不能解决或存在的问题,如果为了写一个框架而写一个框架,很难很好的去发展。

bboss和spring主要区别如下:
1.bboss是轻量级的综合性j2ee框架,而spring是重量级的功能更多
2.bboss aop可以通过其xml语法描述复杂的对象数据及数据结构,而不仅仅是做为ioc组件管理的语法,并且可以非常方便地实现对象和xml之间的转换
3.bboss ioc容器既是组件管理容器也是远程服务注册中心,可以非常方便地对容器中的组件发起远程服务调用,并提供可插拔的认证和鉴权机制
4.bboss标签库非常丰富,包括分页,树等类型。持久层接口简洁易用
5.bboss mvc的控制器方法能非常方便地实现list,map,数组等容器类型参数绑定,方便地实现多文件上传和附件下载。
6.bboss持久层能方便地实现大字段的和文件的存储和获取

暂时这么多,更多信息请参考博客文章


在如今Spring如日中天的时候,bbossgroups难发展啊。
还是会下载来用用看。
25 楼 yin_bp 2012-02-15 07:43
madbluesky 写道
作者应该强调一下跟spring比较,bboss框架的不同点、亮点在哪,解决了哪些spring或其他框架不能解决或存在的问题,如果为了写一个框架而写一个框架,很难很好的去发展。

bboss和spring主要区别如下:
1.bboss是轻量级的综合性j2ee框架,而spring是重量级的功能更多
2.bboss aop可以通过其xml语法描述复杂的对象数据及数据结构,而不仅仅是做为ioc组件管理的语法,并且可以非常方便地实现对象和xml之间的转换
3.bboss ioc容器既是组件管理容器也是远程服务注册中心,可以非常方便地对容器中的组件发起远程服务调用,并提供可插拔的认证和鉴权机制
4.bboss标签库非常丰富,包括分页,树等类型。持久层接口简洁易用
5.bboss mvc的控制器方法能非常方便地实现list,map,数组等容器类型参数绑定,方便地实现多文件上传和附件下载。
6.bboss持久层能方便地实现大字段的和文件的存储和获取

暂时这么多,更多信息请参考博客文章
24 楼 yin_bp 2012-02-14 09:38
zhangzi 写道
看完了,不知道是啥玩意

如题
23 楼 madbluesky 2012-02-14 09:36
作者应该强调一下跟spring比较,bboss框架的不同点、亮点在哪,解决了哪些spring或其他框架不能解决或存在的问题,如果为了写一个框架而写一个框架,很难很好的去发展。
22 楼 zhangzi 2012-02-14 08:00
看完了,不知道是啥玩意
21 楼 yin_bp 2012-02-13 21:13
另外bboss的持久层的sql配置dao [urlhttp://yin-bp.iteye.com/blog/1112997]ConfigSQLExecutor[/url]还支持基于velocity引擎的动态sql,我本人非常喜欢这个东东,详情可参阅博文
《bbossgroups持久层框架动态sql语句配置和使用》
bboss 动态sql使用foreach循环示例
20 楼 yin_bp 2012-02-13 21:01
george_space 写道
......转正题:鼓励楼主的开源精神,楼主的 SQLParams 类都和我的 SqlParam 类命名类似,看来真是有缘。 

很高兴能和你交流,最近比较忙,好不容易抽时间发了这个新闻,下班回来一看发现还很热闹,难得啊。
bbossgroups框架体系是我在工作之余开发的一套框架体系,框架中的某些模块确实参考并引用了spring的部分代码,由此引起部分人的不安,我深感抱歉。

看你的介绍,风格确实有点类似,首先bboss mvc的restful代码风格如下:
@HandlerMapping(value="/query/loginnamequery/{loginname}")
	public @ResponseBody(charset="GBK") 
				String  loginnamequery(@PathVariable(value="loginname",decodeCharset="UTF-8") String loginname)


持久层bboss支持sql配置文件的dao也支持直接操作sql的dao方式,你所对比的方式只是操作sql的dao方式。sql配置的模式,支持sql语句热加载(在线配置修改无需重启服务器),配置语法直接使用bboss aop配置语法,基于sql配置方式的dao用法如下:

ConfigSQLExecutor executor = new ConfigSQLExecutor("com/frameworkset/sqlexecutor/sqlfile.xml");
//按条件查询对象列表
ListBean bean = new ListBean();
bean.setFieldName("阿斯顿飞");
List<ListBean> result = executor.queryListBean(ListBean.class, "dynamicsqltemplate", bean);
//按条件删除数据:
executor.delete("cleardeskmenu", userID, currentSystemID);
//批量更新、删除、插入一批数据(底层采用预编译批处理),还可以指定操作的数据源的名字哦
executor.updateBeans(dbname,"updateUserDeskMapMenusSort", beans);
executor.deleteBeans(dbname, "deleteUserDeskMapMenusSort", beans);
executor.insertBeans(dbname, "insertUserDeskMapMenusSort", beans);
//插入单条记录
executor.insertBean(dbname, "insertDeskMenuWinSize", bean);


上面只是例举了一些使用方法,更详细的信息可以浏览bboss官方博客中关于持久层mvc的部分文章以及[urlhttps://github.com/bbossgroups/bbossgroups-3.5/]在线源码库[/url]




19 楼 yin_bp 2012-02-13 19:12
bao231 写道
这就叫看spring的代码,编写boss,呵呵,真有意思。

伙计你错了bboss并不只是包含mvc,它还包含了ioc,rpc,webservice服务管理和调用,定时任务,持久层,标签库,mq集成,序列化等很多深受我们开发人员喜欢的功能
18 楼 bao231 2012-02-13 18:49
这就叫看spring的代码,编写boss,呵呵,真有意思。
17 楼 yin_bp 2012-02-13 18:45
hlylove 写道
bobotc 写道
这是在抄spring吗

你也发现了?很多类是直接照搬的。

bboss mvc中确实引入了部分spring mvc的代码,这个是事实,我想大家没必要在这个上纠结
16 楼 george_space 2012-02-13 17:02
george_space 写道
chenkaiyu 写道
george_space 写道
与我的框架相比,有优势么?

控制器部分代码》》
@Get("{doType}/{planId}")
    public Result show(@Param("doType") String doType, @Param("planId") Integer planId) {
。。。。。
这位兄弟的代码太长没怎么看懂,也不清楚你的代码的优势,不过可以说一下bboss mvc控制器方法参数是不需要加注解的,是自动和request参数名称映射的,另外dao层组件使用更加简洁。

bobotc 写道
这是在抄spring吗

bboss 和 spring是两个不同的框架,不过spring是bboss的老师


我的控制器方法也可以不加注解,而且通常是不加注解的,比如:
package controllers.test;

public class UserController{
    public Result show() {
        return rf.defaultView();
    }
}

对应的RESTful 式 URI是:
http://{your-host}/test/user/show


优先解析约定规则,当使用注解进行配置后,才使用注解配置的规则。

====================================================
下面是你的DAO部分:
SQLParams params = new SQLParams();   
        params.addSQLParam("id", "1", SQLParams.STRING);   
        // ID,HOST_ID,PLUGIN_ID,CATEGORY_ID,NAME,DESCRIPTION,DATASOURCE_NAME,DRIVER,JDBC_URL,USERNAME,PASSWORD,VALIDATION_QUERY   
        params.addSQLParam("blobname", "abcdblob",   
                SQLParams.BLOB);   
        params.addSQLParam("clobname", "abcdclob",   
                SQLParams.CLOB);   
        SQLExecutor.insertBean("insert into test(id,blobname,clobname) values(#[id],#[blobname],#[clobname])", params);  


下面是我的DAO部分:
BmPlanOfRecycling bean = (BmPlanOfRecycling) dao.getOne(MapperTool.getSqlId(BmPlanOfRecycling.class, "getOne"), new SqlParam().addParam("planId", planId));   


从代码对比来看,你的DAO并不简洁啊,而且最关键的是,你的DAO部分,把SQL语句直接写在Java代码中了,这是一个非常不好的设计,强烈建议楼主改进这部分,我相信你改进完之后应该和我的DAO差不多了。

下面是我的DAO实现数据插入:
int createResult = dao.saveOne(MapperTool.getSqlId(BmPlanOfRecycling.class, "insertSelective"), bmPlanOfRecycling);

===========================================================

体外话:Iteye的UBB编辑器最近很不好用,引用和code标签最近经常出问题,可能和我最近网速不稳定有关系吧。

转正题:鼓励楼主的开源精神,楼主的 SQLParams 类都和我的 SqlParam 类命名类似,看来真是有缘。 
15 楼 george_space 2012-02-13 16:54
chenkaiyu 写道
george_space 写道
与我的框架相比,有优势么?

控制器部分代码》》
@Get("{doType}/{planId}")
    public Result show(@Param("doType") String doType, @Param("planId") Integer planId) {
。。。。。

这位兄弟的代码太长没怎么看懂,也不清楚你的代码的优势,不过可以说一下bboss mvc控制器方法参数是不需要加注解的,是自动和request参数名称映射的,另外dao层组件使用更加简洁。

bobotc 写道
这是在抄spring吗

bboss 和 spring是两个不同的框架,不过spring是bboss的老师

SQLParams params = new SQLParams();  
        params.addSQLParam("id", "1", SQLParams.STRING);  
        // ID,HOST_ID,PLUGIN_ID,CATEGORY_ID,NAME,DESCRIPTION,DATASOURCE_NAME,DRIVER,JDBC_URL,USERNAME,PASSWORD,VALIDATION_QUERY  
        params.addSQLParam("blobname", "abcdblob",  
                SQLParams.BLOB);  
        params.addSQLParam("clobname", "abcdclob",  
                SQLParams.CLOB);  
        SQLExecutor.insertBean("insert into test(id,blobname,clobname) values(#[id],#[blobname],#[clobname])", params); 
george_space 写道
chenkaiyu 写道
george_space 写道
与我的框架相比,有优势么?

控制器部分代码》》
@Get("{doType}/{planId}")
    public Result show(@Param("doType") String doType, @Param("planId") Integer planId) {
。。。。。

这位兄弟的代码太长没怎么看懂,也不清楚你的代码的优势,不过可以说一下bboss mvc控制器方法参数是不需要加注解的,是自动和request参数名称映射的,另外dao层组件使用更加简洁。

bobotc 写道
这是在抄spring吗

bboss 和 spring是两个不同的框架,不过spring是bboss的老师


我的控制器方法也可以不加注解,而且通常是不加注解的,比如:
package controllers.test;

public class UserController{
    public Result show() {
        return rf.defaultView();
    }
}

对应的RESTful 式 URI是:
http://{your-host}/test/user/show


优先解析约定规则,当使用注解进行配置后,才使用注解配置的规则。

====================================================
下面是你的DAO部分:
SQLParams params = new SQLParams();   
        params.addSQLParam("id", "1", SQLParams.STRING);   
        // ID,HOST_ID,PLUGIN_ID,CATEGORY_ID,NAME,DESCRIPTION,DATASOURCE_NAME,DRIVER,JDBC_URL,USERNAME,PASSWORD,VALIDATION_QUERY   
        params.addSQLParam("blobname", "abcdblob",   
                SQLParams.BLOB);   
        params.addSQLParam("clobname", "abcdclob",   
                SQLParams.CLOB);   
        SQLExecutor.insertBean("insert into test(id,blobname,clobname) values(#[id],#[blobname],#[clobname])", params);  


下面是我的DAO部分:
BmPlanOfRecycling bean = (BmPlanOfRecycling) dao.getOne(MapperTool.getSqlId(BmPlanOfRecycling.class, "getOne"), new SqlParam().addParam("planId", planId));   


从代码对比来看,你的DAO并不简洁啊,而且最关键的是,你的DAO部分,把SQL语句直接写在Java代码中了,这是一个非常不好的设计,强烈建议楼主改进这部分,我相信你改进完之后应该和我的DAO差不多了。

下面是我的DAO实现数据插入:
int createResult = dao.saveOne(MapperTool.getSqlId(BmPlanOfRecycling.class, "insertSelective"), bmPlanOfRecycling);
14 楼 george_space 2012-02-13 16:42
chenkaiyu 写道
george_space 写道
与我的框架相比,有优势么?

控制器部分代码》》
@Get("{doType}/{planId}")
    public Result show(@Param("doType") String doType, @Param("planId") Integer planId) {
。。。。。

这位兄弟的代码太长没怎么看懂,也不清楚你的代码的优势,不过可以说一下bboss mvc控制器方法参数是不需要加注解的,是自动和request参数名称映射的,另外dao层组件使用更加简洁。

bobotc 写道
这是在抄spring吗

bboss 和 spring是两个不同的框架,不过spring是bboss的老师


我的控制器方法也可以不加注解,而且通常是不加注解的,比如:
package controllers.test;

public class UserController{
    public Result show() {
        return rf.defaultView();
    }
}

对应的RESTful 式 URI是:
http://{your-host}/test/user/show


优先解析约定规则,当使用注解进行配置后,才使用注解配置的规则。
13 楼 hlylove 2012-02-13 16:28
bobotc 写道
这是在抄spring吗

你也发现了?很多类是直接照搬的。
12 楼 fainfy 2012-02-13 16:21
力挺楼主。这是国内开源人士的光荣与榜样。
11 楼 qiu768 2012-02-13 16:16
一群愤青,不管三七二十一就乱喷。。。。。个个都是牛人
10 楼 pch272215690 2012-02-13 15:52
上来就一通喷,国内开源环境之差可见一斑。鬼佬为兴趣写框架,国人为糊口写代码。
不是中国人写不出好的框架,国情不一样。好不容易有人尝试做开源,还得被喷子扼杀。
9 楼 chenkaiyu 2012-02-13 15:47
george_space 写道
与我的框架相比,有优势么?

控制器部分代码》》
@Get("{doType}/{planId}")
    public Result show(@Param("doType") String doType, @Param("planId") Integer planId) {
。。。。。

这位兄弟的代码太长没怎么看懂,也不清楚你的代码的优势,不过可以说一下bboss mvc控制器方法参数是不需要加注解的,是自动和request参数名称映射的,另外dao层组件使用更加简洁。

bobotc 写道
这是在抄spring吗

bboss 和 spring是两个不同的框架,不过spring是bboss的老师

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • Bbossgroups体系架构.ppt

    Bbossgroups体系架构.ppt

  • 开源j2ee 框架bbossgroups 1.0 数据库操作标签初探

    看看开源j2ee 框架bbossgroups 中的dbutil,batchutil 标签来如何实现数据库的 预编译/普通insert , update , delete ,预编译/普通批处理操作 ,比较简单也比较使用。文章分三部分介绍: 预编译/普通insert , ...

  • j2ee 框架 bbossgroups 1.0 发布

    参考bbossgroups框架来实现持久层的操作: a.灵活的事务管理(声明式事务管理,可编程事务管理,java注解事务管理,jdbctemplate事务管理,五种经典的事务类型,支持事务嵌套,支持多数据库分布式事务) b.灵活...

  • bbossgroups 3.5 发布

    版本:bbossgroups-3.5 官网:http://www.bbossgroups.com 项目博客:http://yin-bp.iteye.com/ Sourceforge站点:http://sourceforge.net/projects/bboss/files/ Github站点:...

  • 企业级JavaEE开发框架bbossgroups作者尹标平专访

    bbossgroups是国内首款集AOP、MVC、持久化、JSP标签库、分布式RPC服务、分布式事件框架于一身的企业级JavaEE开发框架,在Apache License Version 2.0 许可协议下开源。 官网地址:http://www.bbossgroups.com/ ...

  • 开源框架bboss v5.0.0 发布

    J2EE企业级开源框架bbossv5.0.0发布。v5.0.0是bboss有史以来最稳定、功能最全版本,完全兼容之前版本功能。全面采用gradle构建和发布版本,并将版本提交到maven中央库。可以在github查看所有bboss模块。查看bboss更...

  • bbossgroups框架发布的jar包和依赖jar包概览

    bbossgroups框架发布的jar包和依赖jar包概览 jar包构建请参考文章《[url=http://yin-bp.iteye.com/blog/1462842]bboss 版本构建(ant)方法介绍[/url]》 当总的bbossgroups构建指令或者每个子工程的构建bat指令...

  • bbossgroups 3.0 发布,国内首款集

    bbossgroups 3.0 发布,这是国内首款集aop,mvc,persistent,jsp taglib,分布式rpc服务,分布式事件框架于一身的企业级j2ee开发框架 详细信息请看: http://www.javaeye.com/news/20177-bbossmvc-bbossaop

  • 企业级JavaEE开发框架bbossgroups

    ...bbossgroups是国内首款集AOP、MVC、持久化、JSP标签库、分布式RPC服务、分布式事件框架于一身的企业级JavaEE开发框架,在Apache License Version 2.0 许可协议下开源。  官网地址: ...

  • bbossgroups 3.4发布

    版本: bbossgroups-3.4 bboss group 官网:[url]http://www.bbossgroups.com[/url] bboss group 项目博客:[url]http://yin-bp.javaeye.com/[/url] bboss group 项目sourceforge 页面:[url]...

  • bbossgroups 开发系列文章之一 最佳实践

    bbossgroups 开发系列文章之一 最佳实践bbossgroups 开发系列文章之一 最佳实践bbossgroups 开发系列文章之一 最佳实践

  • 全新的bbossgroups-1.0发布

    bbossgroups project contain follow subprojects:1.bboss-persistent, a persistent framework(). a.灵活的事务管理(声明式事务管理,可编程事务管理,java注解事务管理,jdbctemplate事务管理,五种经典的事务...

  • bbossgroups-3.0 发布,新增子项目bboss mvc

    bbossgroups-3.0发布 主要的功能特性: 1.新增的一套mvc框架即bboss-mvc子项目,这是bbossgroups-3.0相比bbossgroups-2.0-RC1最大的变化。 bboss mvc基于bboss aop开发,能够与bboss aop(aop框架),bboss ...

  • bbossgroups 3.3 发布

    bbossgroups 3.3 发布,该版本在3.2的基础上做了非常多的功能增强和功能改进,具体情况参考后面的功能点清单。 项目博客: [url]http://yin-bp.iteye.com/[/url] 项目sourceforge下载地址: [url]...

  • bbossgroups jms组件框架

    bbossgroups jms组件框架 bboss aop框架的jms组件提供针对jms规范的一组简单的操作接口,可一通过 JMSTemplate组件来实现JMS消息的接收和发送功能。 系统中提供了两个JMS Template实现: org.frameworkset.mq....

  • 实验-三、数据库安全性(目的、要求和模板).doc

    实验-三、数据库安全性(目的、要求和模板).doc

  • 基于Docker搭建K8s集群离线包

    基于Docker搭建K8s集群离线包,包含部署时所需的全部文件,可在内网环境中使用,K8s为1.23.0版本,docker为20.10.9-3版本

  • 基于springboot+vue实现的求职招聘类型网站源代码+数据库(优质毕设项目).zip

    基于springboot+vue实现的求职招聘类型网站源代码+数据库(优质毕设项目).zip个人经导师指导并认可通过的98分毕业设计项目,主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者。也可作为课程设计、期末大作业。包含全部项目源码、该项目可以直接作为毕设使用。项目都经过严格调试,确保可以运行! 基于springboot+vue实现的求职招聘类型网站源代码+数据库(优质毕设项目).zip个人经导师指导并认可通过的98分毕业设计项目,主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者。也可作为课程设计、期末大作业。包含全部项目源码、该项目可以直接作为毕设使用。项目都经过严格调试,确保可以运行! 基于springboot+vue实现的求职招聘类型网站源代码+数据库(优质毕设项目).zip个人经导师指导并认可通过的98分毕业设计项目,主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者。也可作为课程设计、期末大作业。包含全部项目源码、该项目可以直接作为毕设使用。项目都经过严格调试,确保可以运行!基于springboot+vue实现的求

  • 基于Android系统Api封装常用工具类.zip

    基于Android系统Api封装常用工具类.zip

Global site tag (gtag.js) - Google Analytics