`
ajoo
  • 浏览: 449842 次
社区版块
存档分类
最新评论

中了annotation的毒了

阅读更多
在1.4上,我最喜欢玩的是dynamic proxy。以前的那个Sum的“奇技淫巧”就人人喊打来着。自打不用担心对1.3, 1.4的兼容问题后,我发现我越来越爱拿着annotation的锤子到处乱砸了,而且是用reflection而不是apt。

给Guice加了一个@Provide的外壳:
class MyModule extends AbstractModule {
  @Provide @Singleton
  public Foo foo(FooImpl impl) {
    return impl;
  }

  @Provide @LittleStrong
  public Bar bar(A a, B b) {
    return new BarImpl(a, b);
  }
}

// 用来代替
bind(Foo.class).to(FooImpl.class).in(Singleton.class);
bind(Bar.class).annotatedWith(LittleStrong.class).toProvider(new Provider<Bar>() {
  @Inject A a;
  @Inject B b;
  public Bar get() {
    return new BarImpl(a, b);
  }
});


又给EasyMock加了@Mock的外壳:
public class FooTest extends PorkTest {
  @Mock private Foo foo;
  @Mock private Bar bar;
}


当考虑怎么样生成一个url字符串时,也是想用annotation:
public class User {
  @Param("username") String name;
  @Param("id") int id;
}
String queryString = QueryStringBuilder.build(new User("ajoo", 1));


绳啊,救~救我吧,一把年纪啦,该稳重一点,“企业”一点啦。我本来是讨厌@UglyRetardedWackyEwEwEwAnnotation来的。
分享到:
评论
13 楼 bigbusyboy 2008-02-22  
引用
这是中了xml的毒了。比我还病入膏肓啊。怜悯中。。。


所以说CoC好呀,配置文件少,代码耦合小。
12 楼 ajoo 2008-01-31  
hlxiong 写道
xml的拥趸
看到在代码里写配置就觉得恶害。。。

这是中了xml的毒了。比我还病入膏肓啊。怜悯中。。。
11 楼 jomper 2008-01-31  
不管怎么说,ajoo 那个@Mock的确用的很漂亮。
10 楼 hlxiong 2008-01-31  
xml的拥趸
看到在代码里写配置就觉得恶害。。。
9 楼 sim114 2008-01-31  
ajoo 写道
sim114 写道
强烈bs在代码里加非功能性的annotation

你这个起码@Mock 还是在test里,
@Provide @Singleton  还是有点用的(尽管我觉得这种配置型的放到外面更好一点点)

居然有在代码里加混淆策略的annotation,请自己查看 proguard
让人觉得脑子发烧了
拜托,这些只是开发用的,不要污染了运行环境好不

“混淆策略”?什么意思?

@Provide放到外面?你真的用过Guice?


proguard.sf.net

@KeepApplication
@KeepPublicGettersSetters
public class Application {
  @KeepClassMemberNames
  ....
 
  @Keep
  void xxx{}
 
}



Guice我没用过,和spring不一样?我印象中就是一个IOC,抱歉可能我想当然了

那我想说的是spring 的@Transactional @Autowired这种

好像前一阵这里提过说guice是针对spring用xml来配置,它是用annotation



8 楼 comet12345678 2008-01-31  
ajoo 写道
comet12345678 写道

annotation除了用来压制一些编译警告,其他地方还从来没有觉得有用

所以说,要多学习呦,同学。


   annotation是jdk新特性中最没有用的。可以用annotation搞出一些花样来,代码,配置,声明混在一起
不觉得有什么好,坚决不用。
  
  
7 楼 ajoo 2008-01-31  
sim114 写道
强烈bs在代码里加非功能性的annotation

你这个起码@Mock 还是在test里,
@Provide @Singleton  还是有点用的(尽管我觉得这种配置型的放到外面更好一点点)

居然有在代码里加混淆策略的annotation,请自己查看 proguard
让人觉得脑子发烧了
拜托,这些只是开发用的,不要污染了运行环境好不

“混淆策略”?什么意思?

@Provide放到外面?你真的用过Guice?
6 楼 ajoo 2008-01-31  
comet12345678 写道

annotation除了用来压制一些编译警告,其他地方还从来没有觉得有用

所以说,要多学习呦,同学。
5 楼 comet12345678 2008-01-31  

annotation除了用来压制一些编译警告,其他地方还从来没有觉得有用
4 楼 sorphi 2008-01-31  
sim114 写道
同样的还有codegen型的,
例如hibernate 生成表结构的那些 length=10 ... (真有人用这个吗?)

总之,我的观点是:除非是运行时必要的东西,否则都不要放到代码里或配置文件里
如果要加,请另放一个地方,部署的时候剥离出去


不同意你的观点,length=10或许能帮助调用者获取验证条件。再说,javadoc是运行时必要的东西么?@Override也不是但很有用。annotation无非是个meta数据而已,他什么时候有用,通过RetentionPolicy来决定不就行了吗?
3 楼 sim114 2008-01-31  
同样的还有codegen型的,
例如hibernate 生成表结构的那些 length=10 ... (真有人用这个吗?)

总之,我的观点是:除非是运行时必要的东西,否则都不要放到代码里或配置文件里
如果要加,请另放一个地方,部署的时候剥离出去
2 楼 sim114 2008-01-31  
强烈bs在代码里加非功能性的annotation

你这个起码@Mock 还是在test里,
@Provide @Singleton  还是有点用的(尽管我觉得这种配置型的放到外面更好一点点)

居然有在代码里加混淆策略的annotation,请自己查看 proguard
让人觉得脑子发烧了
拜托,这些只是开发用的,不要污染了运行环境好不
1 楼 jomper 2008-01-31  
XML正是被滥用后,人们才发现他的不足。
历史总是惊人的相似。

相关推荐

    hibernate annotation 中文文档

    hibernate annotation 中文文档

    hibernate annotation中文文档

    hibernate annotation中文文档

    jakarta.annotation-api-1.3.5-API文档-中文版.zip

    赠送jar包:jakarta.annotation-api-1.3.5.jar; 赠送原API文档:jakarta.annotation-api-1.3.5-javadoc.jar; 赠送源代码:jakarta....人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。

    javax.annotation-api-1.2-API文档-中文版.zip

    赠送jar包:javax.annotation-api-1.2.jar; 赠送原API文档:javax.annotation-api-1.2-javadoc.jar; 赠送源代码:javax.annotation-api...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。

    Hibernate Annotation 中文文档

    逐渐的Hibernate Annotation的映射方式也越来越盛行,相信过不了多久有可能会取代*.hbm.xml映射方式

    jakarta.annotation-api-1.3.5-API文档-中英对照版.zip

    赠送jar包:jakarta.annotation-api-1.3.5.jar; 赠送原API文档:jakarta.annotation-api-1.3.5-javadoc...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。 双语对照,边学技术、边学英语。

    javax.annotation-api-1.3.2-API文档-中文版.zip

    赠送jar包:javax.annotation-api-1.3.2.jar; 赠送原API文档:javax.annotation-api-1.3.2-javadoc.jar; 赠送源代码:javax.annotation...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。

    JAVA 标注annotation

    从某些方面看,annotation就像修饰符一样被使用,并应用于包、类型、构造方法、方法、成员变量、参数、本地变量的声明中。这些信息被存储在annotation的“name=value”结构对中。annotation类型是一种接口,能够通过...

    spring 的Annotation方式

    Spring Annotation

    annotation-1.1.0.jar

    @androidx.annotation.NonNull 缺失的兼容、androidx.annotation兼容包

    annotation的jar包

    javax.annotation-3.0.jar javax.annotation-3.0.jar javax.annotation-3.0.jar

    geronimo-annotation_1.0_spec-1.1.1-API文档-中文版.zip

    赠送jar包:geronimo-annotation_1.0_spec-1.1.1.jar; 赠送原API文档:geronimo-annotation_1.0_spec-1.1.1-javadoc.jar; 赠送源代码:geronimo-...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,

    Annotation技术

    Annotation核心技术Annotation核心技术Annotation核心技术Annotation核心技术Annotation核心技术Annotation核心技术

    annotation

    Annotation在java的世界正铺天盖地展开,有空写这一篇简单的annotations的文章,算是关于Annotation入门的文章吧,希望能各位们能抛砖,共同学习

    Hibernate Annotation jar

    这里面包涵了需要用Hibernate Annotation时,所需要的所有jar包! 现在我们公司在做web项目的时候,已经不用*.hbm.xml这种映射文件了,都是用Annotation(注解)方式来完成实体与表之间的映射关系,这样看起来比用...

    Annotation详细介绍(大全)

    Annotation权威资料 Annotation权威资料 Annotation权威资料 Annotation权威资料 Annotation权威资料 Annotation权威资料Annotation权威资料

    hibernate annotation hibernate3

    hibernate annotation hibernate3

    annotation详解

    annotation详解 讲解annotation的使用 教程

    hibernate 注解 annotation 教程

    hibernate 注解 annotation 教程

    compass annotation关联关系

    compass annotation关联关系

Global site tag (gtag.js) - Google Analytics