文档章节

掰弯Wicket: 让wicketstuff-restannotations与wicket-spri

奋斗到天明
 奋斗到天明
发布于 2015/11/19 20:16
字数 992
阅读 88
收藏 2

啊哈,掰弯Wicket这个题目有点吓人啊,真实的情况是为了让已经带有Spring属性的wicket与rest化,吾想破了脑壳,找遍了google,花了大半天才找到解决方法,详细情况看我娓娓道来~

####起因 公司的项目已经是严重老化,wicket这货在国内基本没人用,百度搜索显示最新的文档还是2010年,也不知是哪个二货选的框架。最近新boss上任,在组里推广rest,于是作为过渡方案,只能在wicket上嫁接rest插件。 作为社会主义的一块砖,那里困难哪里搬,我就开始找方案了。

####过程 虽然也知道wicket小众,但是万一有人也碰到这个问题呢,于是我就体验了一次期望、失望、绝望、鞭尸、成功、不敢相信的过程。

######期望 Wicket是Apache的项目,好歹是大户人家,于是我直接google"wicket rest"期望能看到wicket官方的文档,或者解决方案。但是居然没有?!只有一个WicketStuff公司的方案,好吧,这家伙也是wicket大佬,他们的方案应该可信,至少Rest还是采用注解模式,和SpringMVC类似了,果然!在测试环境Restful的HelloWorld没有问题,于是我信心满满的和同事说咱们联调吧。

wicketstuff提供的rest方案: https://github.com/wicketstuff/core/tree/master/wicketstuff-restannotations-parent

######失望 坑货!问题出现了!我就知道天下没有这么容易的事,出事的是Spring,这货标注的bean居然没有注入,太让人失望了,于是我开始google “wicket-spring”与“wicketstuff-restannotations”的关联,这两货毕竟不是一个爹生的。可是google上居然没有,我只好去github上看源码和文档,看有没有一些demo可用。还真有一个wicketstuff提供的Spring注入的方案wicketstuff-springreference,我还以为有救了,毕竟是一个爹生的两个娃,细看之下,我x,这两货完全不在一个频道之中。我半信半疑地接入项目之中,果然没有什么鸟用……扯淡,只能换一个方案了。

wicketstuff提供的spring方案: https://github.com/wicketstuff/core/tree/master/wicketstuff-springreference-parent

######绝望 于是我在github上找,wicket+rest搜索,居然只有一页项目!!!除了wicketstuff-restannotations,还有一个wicket-rest的可用。于是我在失望中查看源码,这货居然没有jar包,还是从google code拷贝过来,历史悠久,但是我也没有办法了,于是移植到项目,还没跑起来就报错!尼妈!这货1.5版本的方案,依赖的类在6.15版wicket中都找不到了,我绝望了……

wicket-rest提供的方案:https://github.com/ajwillia-ms/wicket-rest-fork

######鞭尸 绝望中我也点不知所措了,于是开始找其他rest框架,还要能与wicket并存,同时能取wicket中的SpringBean,这无异与登天,我有点想念play-framework的日子了。我在google,github中没有找到SpringMVC与Wicket共存的方案,一怒之下我决定鞭尸,不就是拿不到被注入,想方法让他注入就行!

######成功 之前说过wicketstuff提供的Spring注入的方案wicketstuff-springreference不行,于是我直接google找wicket get a spring bean,皇天有眼啊!第一条就是我要找的东西,虽然提问者遇到的问题与我不同,但是解答者的回答中就有我想要的答案Injector.get().inject(Object object);, 如此一来,咸鱼翻身了。

######不敢相信 后来在联调中,出了小问题,我又开始怀疑是rest出问题了,后来发现是sql的问题。经历了这么多,我都不敢相信成功了^_^

####最后方案 最后采用wicketstuff-restannotations方案,然后使用org.apache.wicket.injection.Injector在类初始化的时候注入springbean。代码类似

@ResourcePath("/orders")
public class OrderRestResource extends GsonRestResource {
    @SpringBean
    private OrderService orderService;

    @Override
    protected void onInitialize(GsonSerialDeserial objSerialDeserial) {
        super.onInitialize(objSerialDeserial);
        Injector.get().inject(this);
    }
    
      @MethodMapping(value = "/tickets", httpMethod = HttpMethod.PUT)
    public Object printTicketsByTicketIds(@RequestBody PrintRequst printRequst){
    ……
    }
    ……
}

© 著作权归作者所有

奋斗到天明
粉丝 19
博文 112
码字总数 82707
作品 0
昌平
程序员
私信 提问
加载中

评论(2)

B
Benjamin_Vincent
我在Spring项目曾经要写类结构高度自由的,用XML配置想不出怎么弄,仔细看文档有个类继承他就能拿到Bean对象,而Spring提供的父类源码就有类似手动执行依赖注入并返回对象的方法。
B
Benjamin_Vincent
Wicket的Demo有写Injector.get().inject(Object object);的方法。Wicket之关注MVC功能,在依赖注入只有在Page类下SpringBea或@EJBBean的依赖注入才有效。其他类基本需要手动编写依赖注入。这也是很好的经验,在非Spring社区的项目都需要依赖注入。看来你没有被老的Spring项目所支配的恐惧!
Apache Wicket 8.0.0-M8 发布,Web 开发框架

Apache Wicket 8.0.0-M8 已发布,Wicket 是一个 Java 语言的 Web 开发框架,与 Struts,WebWork,Tapestry 相类似。其特点在于对 HTML 和代码进行了有效的分离(有利于程序员和美工的合作),...

王练
2017/10/27
451
0
Apache Wicket 6.21.0 发布,Web 开发框架

Apache Wicket 6.21.0 发布,现在使用语义版本来开发 Wicket,现已提供在 Maven: org.apache.wicket wicket-core 6.21.0 下载: * Source: http://www.apache.org/dyn/closer.cgi/wicket/6.......

oschina
2015/11/17
2.5K
6
Apache Wicket 8.2.0 发布,Java Web 开发框架

Apache Wicket 8.2.0 发布了,Wicket 是一个 Java 语言的 Web 开发框架,与 Struts、WebWork、Tapestry 相类似,其特点在于对 Html 和代码进行了有效的分离(有利于程序员和美工的合作),基...

局长
2018/11/18
957
0
Apache Wicket 8.6.0 和 7.15.0 发布,Java Web 开发框架

Apache Wicket 8.6.0 和 7.15.0 发布了。Wicket 是一个 Java 语言的 Web 开发框架,与 Struts、WebWork、Tapestry 相类似,其特点在于对 Html 和代码进行了有效的分离(有利于程序员和美工的...

xplanet
09/11
1K
4
Apache Wicket 8.1.0 发布,Java Web 开发框架

Apache Wicket 8.1.0 发布了,Wicket 是一个 Java 语言的 Web 开发框架,与 Struts、WebWork、Tapestry 相类似,其特点在于对 Html 和代码进行了有效的分离(有利于程序员和美工的合作),基...

h4cd
2018/09/16
702
1

没有更多内容

加载失败,请刷新页面

加载更多

CQRS与AXON

CQRS 看了蛮多文章,只会CRUD,却不懂CQRS,CQRS是遵循DDD思想而产生的一种模式,Command and Query Responsibility Segregation 命令与查询隔离。查询就直接通过正常的模式service调dao层。...

无极之岚
12分钟前
2
0
OSChina 周三乱弹 —— 欢迎你来做产品经理

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @巴拉迪维 :10多次劲歌金曲获奖,更多叱咤歌坛排名,黎明才应该是四大天王之首,只可惜拍的电影太少。单曲循环一个多月的歌,力荐 《无名份的...

小小编辑
26分钟前
31
2
500行代码,教你用python写个微信飞机大战

这几天在重温微信小游戏的飞机大战,玩着玩着就在思考人生了,这飞机大战怎么就可以做的那么好,操作简单,简单上手。 帮助蹲厕族、YP族、饭圈女孩在无聊之余可以有一样东西让他们振作起来!...

上海小胖
今天
8
0
关于AsyncTask的onPostExcute方法是否会在Activity重建过程中调用的问题

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/XG1057415595/article/details/86774575 假设下面一种情况...

shzwork
今天
7
0
object 类中有哪些方法?

getClass(): 获取运行时类的对象 equals():判断其他对象是否与此对象相等 hashcode():返回该对象的哈希码值 toString():返回该对象的字符串表示 clone(): 创建并返此对象的一个副本 wait...

happywe
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部