首页 > 代码库 > 通用方法重用,测试实现。

通用方法重用,测试实现。

    最近在思考代码重用的问题,举个简单的例子,为了隔离前后台的操作,前台一个项目,后台一个项目,这里就会出现部分通用代码段的重用问题,本文提供几个解决方案:

    一:    我们可以选择项目依赖,很简单的就解决这个问题,本文不对这里的解决方法进行过多描述(项目右键-Properties-Java Build Path 选中Projects,将通用的base项目代码加入到Build Path里面即可)··

技术分享

    二:    将通用代码段打包Jar,今天在测试这种解决方案的时候,在使用spring注解引入jar包中的service时候,会报找不到对应的service,很奇怪的一个问题,后来查询相关资料,发现问题出现在生成jar包的方式上,即所谓打jar包

技术分享如果打包Jar的时候 选中这个Add directory entries 之后,就不会出现所谓的getResource获取资源总是为空的情况了~~


具体原因如下:

可以使用如下代码段进行测试:


public static void main(String[] args) throws Exception {
		// 项目中jar包所在物理路径
		String jarName = "E:/testpackage.jar";
		JarFile jarFile = new JarFile(jarName);
		Enumeration<JarEntry> entrys = jarFile.entries();
		while (entrys.hasMoreElements()) {
			JarEntry jarEntry = entrys.nextElement();
			System.out.println(jarEntry.getName());
		}				
	}
默认生成的jar包,运行结果如下:



META-INF/MANIFEST.MF  
    com/alexgaoyh/util/DateStyle.class  
    ……
如果勾选Add directory entries选项生成的jar包,运行结果如下:



META-INF/MANIFEST.MF  
com/  
com/alexgaoyh/  
com/alexgaoyh/util/  
com/alexgaoyh/util/DateStyle.class


默认方式生成的jar包中,只含有class文件,而并没有我们大众所知的文件夹目录结构。可能我们大多数人认为 com.alexgaoyh.Student类,Student类文件就应该在com文件夹下的alexgaoyh文件夹里,这其实是片面的,是一个误区!

com.test真正的含义是package包域名,就好比.net里的命名空间,它只是为了区分、汇总、唯一标识不同的类而提出的概念,跟文件夹目录层次结构是两回事,我们只是习惯上用文件夹目录来展示package而已。但package却不一定非要用过文件夹目录来展示。


通用方法重用,测试实现。