`
pf_miles
  • 浏览: 134635 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

其实Annotation这样就美了...

    博客分类:
  • Java
阅读更多
是的,annotation的出现减少了繁杂的配置文件,将那些原本可能是runtimeException的东西扼杀在了编译期。
不过最近在考虑一个小项目的时候发现想要用它来完全代替传统的配置文件还很困难。
首先,它无疑使得代码变得难看,这一点不用多说了;
其次,它不支持多份配置:
因为annotation怎么说也是直接写在代码里的,写在类的定义里的。也就是说一个类也就只能对应一套annotation。那么遇到这种情况:我想初始化同一个类的很多个对象作为prototype或者说单例的共享对象,我要求这些对象虽然是同种类型、拥有同样的行为,但要包含不同的数据。我在项目中遇到这样配置要求的话目前的annotation根本无法满足,还得使用传统的“配置”。

上面说的只是“对象”层次的“多份配置”,或许有人认为这本来就不该是annotation的工作,所以不怎么有说服力。但是我仍然相信存在真正的“类”层次的“多份配置”的需求的:比如你想对同一个类做出同种类型但不同实例的代理呢?显然靠annotation是不行的。

那么,我有一个想法:为什么不把annotation“抽出来”呢?也就是把annotation从Java源码里面搬到一个专门的文件里。我们也许会觉得“这跟‘配置文件’有什么不同?”,但我觉得如果这成为Java的规范的话,它完全可以提供编译器的支持,把这些独立出来的文件当成那些java类文件的延伸,编译的时候还是作为一个整体处理...这样的话它既有了annotation的优势,又能像传统配置文件一样强大,就更美了。

另外,我也不是故意要将annotation用传统的配置文件的标准来衡量。其实依现在的annotation来看,它的目标并不是作为传统配置文件的替代品。它只是想让大家把那些“不至于”或者说根本不应该放在配置文件里的东西放到它里面来,可以缓解滥用配置文件的情况。但该“配置”的地方还是要配置,传统配置文件的作用在很多情况下仍然无可替代。

当然,我想如果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.annotation-api-1.3.5-sources.jar; 赠送Maven依赖信息文件:jakarta.annotation...

    javax.annotation.jar文件

    spring 注解初始化,初始化开始@postconstruct 对象销毁@predestroy javax.annotation.jar文件

    annotation-1.1.0.jar

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

    完整的android.support.annotation

    完整的android.support.annotation.jar包含Nullable、Keep、XmlRes、TransitionRes、WorkerThread等共49个类

    jar包_javax.annotation.zip

    在本例中,我们关注的`jar`包是`javax.annotation.zip`,它包含了`javax.annotation`相关的API,主要用于处理Java的注解(Annotation)。 `javax.annotation`是Java标准版(Java SE)的一部分,提供了标准的注解,...

    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-api-1.3.2-sources.jar; 赠送Maven依赖信息文件:javax.annotation-api-...

    androidx-annotation-1.0.0.jar

    androidx-annotation-1.0.0.jar

    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-1.2-sources.jar; 赠送Maven依赖信息文件:javax.annotation-api-1.2.pom;...

    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.annotation-api-1.3.5-sources.jar; 赠送Maven依赖信息文件:jakarta.annotation...

    mybatis-plus-annotation-3.5.3.2.jar

    mybatis-plus-annotation.jar MP 注解 jar 包 mybatis-plus 的注解 jar 包,包含了 mybatis-plus 注解功能 各个版本

    javax.annotation.3.0.1.jar

    javax.annotation.3.0.1.jar

    androidx-annotation-1.2.0.jar

    androidx-annotation-1.2.0.jar

    javax.annotation.jar

    javax.annotation.jar

    javax.annotation-3.0.jar.zip

    一旦这些都设置好,`@Resource`注解就能正常工作,帮助你实现依赖注入,简化代码,提高代码的可维护性和可测试性。 在升级到`javax.annotation-3.0.jar`之前,务必确认这个版本与你的Java版本和服务器环境兼容。...

    org.aspectj.lang.annotation.Around所需要的包

    在Java编程环境中,有时我们可能会遇到“java.lang.ClassNotFoundException: org.aspectj.lang.annotation.Around”的错误,这通常意味着运行时环境无法找到特定的类,即`org.aspectj.lang.annotation.Around`。...

    javax.annotation-3.1.2.2-sources.jar

    《深入解析javax.annotation-3.1.2.2-sources.jar》 在Java开发领域,javax.annotation包是不可或缺的一部分,它提供了许多用于元编程的注解(Annotations)。这些注解在代码中起到了辅助作用,帮助编译器和运行时...

    javax.annotation-api-1.3.2 jar包.rar

    例如,如果你有一个名为"userDAO"的bean,你可以在需要使用它的类中声明一个成员变量,并用`@Resource(name="userDAO")` 注解,这样Spring容器就会自动将"userDAO"注入到这个变量中。 3. **javax.annotation-api-...

    Annotation注解的介绍和使用

    System.out.println("Annotation found: " + annotation.value()); } ``` #### 总结 Annotation是Java平台提供的一种强大的元数据机制,它不仅简化了代码,还极大地增强了代码的表达力和灵活性。通过合理地使用和...

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

    注:下文中的 *** 代表文件名中的组件名称。 # 包含: 中文-英文对照文档:【***-javadoc-API文档-中文(简体)-英语-对照版.zip】 jar包下载地址:【***.jar下载地址(官方地址+国内镜像地址).txt】 ...

    javax.annotation-api-1.3.2

    JDK9及以上版本没有javax.annotation-api-***.jar包 ,无法使用注解:@Resource JDK新特性,高版本JDK没有自带的javax...下载javax.annotation.jar包,导入到lib文件夹下,然后Add as library,就可以使用@Resource

Global site tag (gtag.js) - Google Analytics