spring 扫描包 不起作用
来源:互联网 发布:周杰伦的淘宝店是什么 编辑:程序博客网 时间:2024/06/01 07:18
问题
spring中配置了包路径,但不扫描包,上网搜索后发现,eclipse导出包时勾选add directory entry就ok了。我的疑问是add directory entry作用是什么?spring扫包是什么原理,怎么会跟add directory entry有关系?
add directory entry作用
我们先来看一下add directory entry的作用。
工程目录
eclipse 导出包 勾选 add directory entry
eclipse 导出包 不勾选 add directory entry
使用jar命令查看不同
可以清晰的看到,添加了directory entry 的有文件夹信息;没有添加directory entry的没有文件夹信息。
spring扫包原理
从ContextNamespaceHandler入手跟踪spring源码获知,spring通过Classloader.getResources(String path)获取资源
PathMatchingResourcePatternResolver.javaprotected Set<Resource> doFindAllClassPathResources(String path) throws IOException { Set<Resource> result = new LinkedHashSet<Resource>(16); ClassLoader cl = getClassLoader(); //使用java.lang.ClassLoader获取资源 Enumeration<URL> resourceUrls = (cl != null ? cl.getResources(path) : ClassLoader.getSystemResources(path)); while (resourceUrls.hasMoreElements()) { URL url = resourceUrls.nextElement(); result.add(convertClassLoaderURL(url)); } if ("".equals(path)) { // The above result is likely to be incomplete, i.e. only containing file system references. // We need to have pointers to each of the jar files on the classpath as well... addAllClassLoaderJarRoots(cl, result); } return result; }
这里模拟spring获取包代码,将导出的包加入到另外一个工程类路径下,获取包信息;添加没有文件夹信息的包后,url始终为空!添加有文件夹信息的包后,就可以获取到包资源了。
URL url = TestDirectoryEntry.class.getClassLoader().getResource("a");System.out.println(url);
总结
add directory entry,jar包包含文件夹信息,可以根据包名获取资源信息;
0 0
- spring 扫描包 不起作用
- Spring包扫描
- Spring 包自动扫描
- Spring 包扫描
- spring component-scan 包扫描
- spring扫描包管理bean
- spring 和 spring mvc 扫描包问题
- Spring 学习记录 4 扫描包
- Spring 使用@ComponentScan扫描注解包
- spring组件扫描包component-scan
- spring和springMVC扫描包的问题
- Spring和SpringMVC的包扫描问题
- spring包扫描<context:component-scan>说明
- Spring扫描自定义jar包中的Bean
- Spring和Spring MVC包分开扫描原因
- 为啥Spring和Spring MVC包扫描要分开?
- 扫描包
- Spring 自动扫描 不支持jar包 <component-scan> 的解决方案
- Valgrind 使用简介
- 在Objective-C项目中使用ios-charts
- nodejs高大上的部署方式-PM2
- 笔试基础归纳-8.16
- android developer tiny share-20160816
- spring 扫描包 不起作用
- 【Android】44、ListView 的点击事件
- java笔记--关于线程同步(5种同步方式)
- Java用freemarker导出word
- php上传二进制数据流
- 图解Linux下源码安装PHP7.0.9 +Nginx
- 项目应用:http状态码大全
- 状态机的两种写法
- GPS和北斗导航都能被欺骗,你还敢用导航吗?