zoukankan      html  css  js  c++  java
  • 你真的了解META-INF吗?

    你真的了解META-INF吗?

    做过JAVA EE开发的工程师应该都知道在JAVA build出来的JAR或者WAR的顶层目录下有个META-INF文件夹吧,可是有多少人能够清楚说出这个文件夹到底是做神马的? What is the purpose of META-INF? 恐怕不是都能说的清楚准确吧。

    把这个问题抛出来,是因为我在公司的项目中发现META-INF这个文件夹被误用了,看来不是每个人都清楚:)

    所谓META-INF, 说白了就是存放一些meta information相关的文件的这么一个文件夹, 一般来说尽量不要自己手工放置文件到这个文件夹。怎么理解这句话呢?就是说这个文件夹应该被看作是JAVA工程的一个内部META目录,所以这个目录下的文件应该都是build工具来生成的。我们自己的文件应该直接放到根目录下或者其他的子目录中。

    根据官方的JAR file specification(http://docs.oracle.com/javase/7/docs/technotes/guides/jar/jar.html), 一个典型的META-INF目录下可能包含如下几种文件或者子目录:
    • MANIFEST.MF
    • INDEX.LIST
    • x.SF
    • x.DSA
    • services/

    不过理想和现实总是有差距,现在即使一些著名的开源代码对META-INF的使用上都存在大的差异,类似Apache CXF中就有这样的Spring配置:
    <beans xmlns="http://www.springframework.org/schema/beans"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns:jaxws="http://cxf.apache.org/jaxws"
         xsi:schemaLocation="
    http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
    http://cxf.apache.org/jaxws http://cxf.apache.org/schema/jaxws.xsd">
    
         <import resource="classpath:META-INF/cxf/cxf.xml" />
         <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />
         <import resource="classpath:META-INF/cxf/cxf-servlet.xml" />
      ...
    </beans>
  • 相关阅读:
    php优秀框架codeigniter学习系列——安装,配置
    设计模式学习系列——桥接模式
    elasticsearch学习笔记——相关插件和使用场景
    elasticsearch学习笔记——安装,初步使用
    设计模式学习系列——适配器模式
    php优秀框架codeigniter学习系列——前言
    设计模式学习系列——原型模式
    angular 自定义指令 directive transclude 理解
    inq to datatable group by 多列 实现
    CSS3 media 入门
  • 原文地址:https://www.cnblogs.com/cxsabc/p/10627721.html
Copyright © 2011-2022 走看看