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

啊哈,掰弯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){
    ……
    }
    ……
}

转载于:https://my.oschina.net/markho/blog/532915

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值