精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-08-24
最后修改:2011-09-03
关于Lombok这个东西,论坛里已经有人介绍过,我也是通过别人帖子了解到这个小工具: http://www.iteye.com/topic/798305 不过作者以免写Getter/Setter为题来介绍Lombok的优势,看了后面的评论之后,觉得这个工具意义不大. 后来在博客在线看到一篇文章,期中提到了Lombok工具.这个工具已经被国外创业者所使用,随之对其产生了很浓厚的兴趣. <Java开源建站工具>http://www.jobbole.com/entry.php/1233
关于如何介绍Lombok这个工具,自己想了半天,觉得实在比不过作者在首页提供的视频介绍:
ok~ 写了这么多Lombok到底是什么东西,他具体能带来什么便利呢? Lombok主要是提供一套注解,根据注解在编译时生成相关代码,目前提供如下注解:
@Getter / @Setter public int getFoo() {return foo;} .@Getter(lazy=true) @ToString Lombok会根据field自动生成 toString 方法,这个对调试来说很方便! 这个注解生成的toString格式:
LombokUser(id=001, name=wity_lv, email=wity_lv@sample.com)
@EqualsAndHashCode hashCode and equals 方法.@NoArgsConstructor , @RequiredArgsConstructor and @AllArgsConstructor @Data @ToString , @EqualsAndHashCode , @Getter on all fields, and @Setter on all non-final fields, and @RequiredArgsConstructor !@Cleanup close() methods safely with no hassle.@Synchronized synchronized done right: Don't expose your locks.@SneakyThrows @Log val @Delegate 如何使用?1. 从项目首页下载lombok.jar 2. 双击lombok.jar, 将其安装到eclipse中(该项目需要jdk1.6+的环境)
3. 将Lombok.jar添加到classpath中 4. 编码看看:
项目结构:
package lv.sample.lombok; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import lombok.extern.log4j.Log4j; @Data @NoArgsConstructor @AllArgsConstructor @Log4j public class LombokUser { private String id = null; private String name = null; private String email = null; public static void main(String[] args) { log.info("test the lombok bean"); LombokUser u = new LombokUser("001", "wity_lv", "wity_lv@sample.com"); System.out.println(u.toString()); LombokUser u2 = new LombokUser("001", "wity_lv", "wity_lv@sample.com"); System.out.println(u.equals(u2)); } }
2011-08-24 11:57:36 test the lombok bean
2011-08-24 11:57:36 LombokUser(id=001, name=wity_lv, email=wity_lv@sample.com) 2011-08-24 11:57:36 true What is happenning??? 使用javap看看编译后的代码: 在eclipse outline中显示的结构
到这里 ~ 这些仅仅只是作者提供一些方便的注释, 当然我们可以fork这个项目的 GitHub, 研究内部原理,构建适合自己团队的Lombok: https://github.com/rzwitserloot/lombok
P.S:[quote="key232323"][quote="曾经de迷茫"]直接 Groovy 吧[/quote] 仅此祭奠那些纯javaer。。。不要再这么纠结了[/quote]
从这里楼就歪了... 讨论Groovy,新开贴好吧... 这里你的高谈会被"翻页"掩盖, 也顺便遮盖了你的牛x.
关于这个工具我只是分享出来,用不用在个人, 什么Groovy/JRuby, 想用那个都行... Groovy/Ruby我都有用, Lombokye在用, 楼下请勿再劝我Groovy, 前提是我没有劝各位用一定lombok, 本帖纯属分享.
回帖讨论的Groovy内容我贴出来
我 写道
曾经de迷茫 写道
直接 Groovy 吧 这个问题提的很好, 我也有考虑. 以前我一直像把Groovy/JRuby引入已有项目.. Groovy中集合了Ruby/Python这些脚本语言的语法优势,让人耳目一新. 有做过尝试,使用Groovy还是需要一定的上手时间,项目紧了,估计会扔一边了. Lombok 和 Groovy对比的问题, 值得研究. Groovy是从语法出发,将java脚本化, Lombok更关注代码片段, 将各种最佳实践用注解来代替. Spring/Hibernate用注解代替配置. Lombok用注解代替部分代码.
ke232323提到的资源不错.
ke232323 写道
groovy引入到项目,还有什么额外的工作不成?
两种方式,一种直接groovy代码,编译成class再部署,开发方式一点变化都没有。 令一种用groovy源文件,用classloader去defineClass然后load,继续以前的开发方式。 至于快速从javaer 到 javaer * 30% + groovyer * 70%, 如果你java基础ok,3天,分别看3个文档,就ok了—— 分别是 groovy-manning.groovy.in.action.2007.pdf groovy-userguide.pdf http://blog.csdn.net/hivon/article/details/4256296
我 写道
这个跑题跑的...
我有尝试Groovy, 一个新项目用的就是Grails, 原有项目集成Groovy要成本,有引入的时间我早把活干完了. 集成Groovy有我知道的有3中方式, 1. 编译后引用, Groovy->compile to -> *.class 然后java应用, 这个问题有循环引用的问题 2. 用BSF直接以脚本的方式引用Groovy 3. 依赖Spring, GroovyBean 添加到Spring配置文件中. 在你的blog没看到groovy相关主题, 不知道你是否有实践. 对这个有兴趣讨论的话可以单开主题讨论.
key232323 写道
qiuboboy 写道
groovy我关注过一阵子,但是我对他的性能实在是看不过去,你把他生成的class反编译回去,看着蛋疼,估计java7后有所改善。 这一点不假—— 不过编译过的class进行缓存后,也不过是多执行了一些method invoke方法而已,方法栈多出的数量级比spring框架bean的调用少多了——而且性能一般不在这儿,你可以用这样的代码做测试: currentSec loadClass() newInstance() invokeMethod(obj, 'testMethod') endSec 其中 testMethod是用Sql批处理向数据库插入100条数据,分页查询出来100条, 你同样用java写这个testMethod(顺便看看jdbc和ibatis或spring jdbctemplate的性能差距) 在并发,用jmeter的junit做并发测试,你就会看到性能到底有差多少了——我一会儿再把这个写一遍跑个试试。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2011-08-24
lombok用过不错 对开发简单的javaBean很有帮助
|
|
返回顶楼 | |
发表时间:2011-08-25
没看出哪好-_-||
|
|
返回顶楼 | |
发表时间:2011-08-25
估计调试比较困难
|
|
返回顶楼 | |
发表时间:2011-08-25
有点意思,不过不够彻底……
spring roo貌似更猛,一句注解搞定一个领域模型 java都朝这样的方向发展么? |
|
返回顶楼 | |
发表时间:2011-08-25
volking 写道 估计调试比较困难
Debug 我还没试过.. 有Delombok工具, 将注解转化成java代码. 这个工具作者是为GWT设计的. Debug如果有问题可以用这个 |
|
返回顶楼 | |
发表时间:2011-08-25
KimHo 写道 有点意思,不过不够彻底……
spring roo貌似更猛,一句注解搞定一个领域模型 java都朝这样的方向发展么? 少量的代码,完成更多的工作.肯定是这么发展. Roo生成的东西太多了, 真正用起来心里没底... |
|
返回顶楼 | |
发表时间:2011-08-25
最后修改:2011-08-25
jackra 写道 没看出哪好-_-||
特点是,简单,易用... 我最常用的是@Data 和 @Log4j 这两个注解. 省不少事. @Data @Log4j @XmlRootElement(name="user") @XmlAccessorType(XmlAccessType.FIELD) public class User { private String id = null; private String name = null; private String password = null; private String workCode = null; private String telephone = null; private String email = null; public User() { } /** * create user from DyeResourceTools.jar * @param userInfo * @return */ public static User fromUserInfo(UserInfo userInfo) { if(userInfo == null) { log.warn("occur a null userInfo parameter on creating user."); return null; } User user = new User(); user.setId(userInfo.getStrUserId()); user.setName(userInfo.getStrName()); user.setWorkCode(userInfo.getStrWorkCode()); user.setTelephone(userInfo.getStrTelephone()); user.setEmail(userInfo.getStrEmailAddress()); return user; } } 这代码看起来多清爽 |
|
返回顶楼 | |
发表时间:2011-08-25
直接 Groovy 吧
|
|
返回顶楼 | |
发表时间:2011-08-25
没啥好处啊,有些注解需要需要写在方法上!!!!!!!!
|
|
返回顶楼 | |