- 浏览: 229138 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (102)
- 开源软件 (1)
- 并发 (14)
- WEB (1)
- NIO (4)
- Socket (5)
- 应用服务器 (4)
- 集群 (0)
- 数据库 (1)
- JAVA基础 (17)
- 开源框架 (2)
- 业务知识 (1)
- JVM (9)
- Windows (1)
- LINUX (0)
- Jquery (0)
- JMS (0)
- Cache (0)
- Oracle (5)
- XML (0)
- EJB (0)
- WebService (0)
- Struts2 (1)
- Hibernate (1)
- Spring (0)
- 设计模式 (4)
- UML (0)
- JS (12)
- 网络爬虫 (0)
- 数据结构与算法 (1)
- EXT (1)
- DIV+CSS (2)
- 安全 (3)
- Android (9)
- LDAP (1)
- Mybatis (1)
最新评论
-
Dom_4j:
...
理解注解中的@Inherited -
s469799470:
demo少个ID
iframe父子页面交互问题 -
errorerror0:
...
iframe父子页面交互问题 -
errorerror0:
iframe父子页面交互问题 -
johnawm:
2012-12-18 wangshibei 写道CountD ...
CountDownLatch的使用
Class.getResources(String path) path如果是以 / 开头,就从classpath中去找(classpath可以认为是eclipse的bin目录或者是target的classes目录),
如果不以/开头,就以当前类的位置开始找,也就是它有两种搜索方式。
.classloader不能以/为开头,classloader.getResource只能从classpath中去找。
例如在src/com/test/example2目录下存在aa.xml文件则。
@Test public void test1() { System.out.println(TestResource.class.getResource("aa.xml")); --没有以/开头,从当前类位置去找。 System.out.println(TestResource.class.getClassLoader().getResource("aa.xml")); System.out.println("TestResource.test1()"); } 执行结果为: file:/C:/Users/ltchyj/workspace/testapp2/bin/com/test/example2/aa.xml null TestResource.test1()
可以看出,classloader.getResource在当前路径下找不到相关资源,但是class.getResource方法可以找到相关资源
@Test public void test2() { System.out.println(TestResource.class.getResource("/com/test/example2/aa.xml")); //以/为开头。从classpath下面去找。 System.out.println(TestResource.class.getClassLoader().getResource("com/test/example2/aa.xml"));//classloader不能以/为开头, System.out.println("TestResource.test2()"); } 执行结果为: file:/C:/Users/ltchyj/workspace/testapp2/bin/com/test/example2/aa.xml file:/C:/Users/ltchyj/workspace/testapp2/bin/com/test/example2/aa.xml TestResource.test2()
以上执行结果可以看出,class.getResource和classloader.getResource方法在当前classpath下都看可以找到指定的资源,唯一的区别是class.getResouece以/开头,classloader.getResource不以/开头。
@Test public void test3() { System.out.println(TestResource.class.getResource("")); //获取的 System.out.println(TestResource.class.getClassLoader().getResource("")); System.out.println("TestResource.test3()"); } file:/C:/Users/ltchyj/workspace/testapp2/bin/com/test/example2/ file:/C:/Users/ltchyj/workspace/testapp2/bin/ TestResource.test3()
class.getResourceAsStream 和getClassLoader().getResourceAsStream
class.getResourceAsStream,如之前的class.getResource一样,只不过包装了一个流,返回给你一个输入流。
现在来看一段mybstis的源码。
public void registerAliases(String packageName, Class<?> superType){ //这里传入的是Object.class ResolverUtil<Class<?>> resolverUtil = new ResolverUtil<Class<?>>(); resolverUtil.find(new ResolverUtil.IsA(superType), packageName); Set<Class<? extends Class<?>>> typeSet = resolverUtil.getClasses(); for(Class<?> type : typeSet){ // Ignore inner classes and interfaces (including package-info.java) // Skip also inner classes. See issue #6 if (!type.isAnonymousClass() && !type.isInterface() && !type.isMemberClass()) { registerAlias(type); } } public ResolverUtil<T> find(Test test, String packageName) { String path = getPackagePath(packageName); //获取package对应的path,将.替换为/ try { List<String> children = VFS.getInstance().list(path); for (String child : children) { if (child.endsWith(".class")) { addIfMatching(test, child); } } } catch (IOException ioe) { log.error("Could not read package: " + packageName, ioe); } return this; } protected String getPackagePath(String packageName) { return packageName == null ? null : packageName.replace('.', '/'); } public List<String> list(String path) throws IOException { List<String> names = new ArrayList<String>(); for (URL url : getResources(path)) { names.addAll(list(url, path)); } return names; } protected static List<URL> getResources(String path) throws IOException { return Collections.list(Thread.currentThread().getContextClassLoader().getResources(path));//
根据上述代码可以看出,外部传入一个包名,
1.首先将包名中的.替换为/
2.使用classloader.getResource获取当前包路径下的所有class资源。
3. 使用classloader加载
发表评论
-
深入学习EnumSet
2018-03-25 00:18 492Set接口的实现类HashSet/TreeSet,它们内部都是 ... -
枚举中valueOf用法
2018-01-14 11:21 4471Enum的特征如下: 1.它不能有public的构造函数,这样 ... -
使用自定义注解搭建简单框架
2017-05-01 00:54 503本文主要介绍如何使用Java运行时级别的注解配合反射来搭建框架 ... -
java注解处理器
2017-04-30 17:43 635注解处理器: Java SE5扩 ... -
理解注解中的@Inherited
2017-04-30 16:06 32336@Inherited: @Inherited 元注解是一 ... -
JAVA注解总结
2017-04-30 12:59 537元注解: 元注解 ... -
apache-fileupload文件上传
2017-02-25 01:26 447临时文件的清理: FileCleaningTracker ... -
java泛型理解2
2017-01-07 22:54 451泛型类型注意细节: 1.泛型类型变量不能是基本数据类型 比如, ... -
JAVA泛型理解
2017-01-07 22:33 464泛型类型的擦除: ArrayList< ... -
逻辑运算与移位运算
2012-11-27 14:56 1254源码:正数的补码与原码相同例+7 源码:00000111 补码 ... -
关于数字签名基础知识
2012-10-08 17:40 13041.消息摘要 public class MessageDige ... -
JJd
2012-05-10 20:02 0//Access-Request报文 创建message ... -
HashMap原理
2012-04-29 17:27 1783概述: HashMap是基于哈希表的Map接口的非同步实现。此 ... -
使用内部类有什么好处
2012-03-17 12:41 1284使用内部类在java编程高级设计中是必须的,它能使你的代码更加 ... -
关于a& 0xff的运算
2011-11-21 11:23 1404byte是一个有符号数可以表示-128~+127,但是作为一个 ... -
java调用Windows命令行
2011-11-20 21:32 1682java来调用windows的命令,一般情况下下面两行代码即可 ... -
parseInt(String s, int radix)用法介绍
2011-11-19 22:13 6270parseInt(String s, int radix) , ... -
深入理解String.getBytes()中编码问题
2011-11-04 15:25 2518查看jdk的源码得知,String.getBytes()的源码 ...
相关推荐
mybatis配置的重要文件包括mybatis-3-config.dtd mybatis-3-mapper.dtd
mybatis-plus最新代码生成器项目源码 :mybatis-plus-generator.zip mybatis-plus最新代码生成器项目源码 :mybatis-plus-generator.zip mybatis-plus最新代码生成器项目源码 :mybatis-plus-generator.zip ...
mybatis-generator-core-1.3.5.jarmybatis-generator-core-1.3.5.jarmybatis-generator-core-1.3.5.jarmybatis-generator-core-1.3.5.jar
mybatis-plus-generator-3.2.0.jar
解决mybatis头文件报错 下载好压缩包 解压将文件放到本地文件夹 例如 D盘的哪个文件夹 D:\mybatis\ ;然后打开eclipse ->Window->prefenrence->XML->XML Catalog->User Specifiled Entreis->Add->Location(此处是你...
mybatis-3.5.9 源码(mybatis-3-mybatis-3.5.9.tar.gz)
mybatis-3-mapper.dtd
mybatis-spring-1.3.1.jar 包,mybatis和spring整合用,可以和 mybatis-3.4.4 等配合使用
赠送jar包:mybatis-plus-boot-starter-3.5.1.jar; 赠送原API文档:mybatis-plus-boot-starter-3.5.1-javadoc.jar; 赠送源代码:mybatis-plus-boot-starter-3.5.1-sources.jar; 赠送Maven依赖信息文件:mybatis-...
mybatis-plus源码(mybatis-plus-3.5.1.tar.gz)
------------------------- ------------------------ mybatis-3.2.2.jar --------------------------- ------------------------
源码下载!绝对的mybatis源码,在Myeclipes或Eclipse中直接引入即可看源码!