打成jar包就不能被sping的context:component-scan找到了吗?
有关sprigmvc的问题
我有一个普通的controller,比如:
@Controller("test")
public class Test{
@RequestMapping(value = "/aaa.bo", method = RequestMethod.GET)
public String aaa(HttpServletRequest request) {
System.out.println("fdsfsd");
return null;
}
}
然后,在DispatcherServlet的xml配置文件中,
定义一个scan,如下
<context:component-scan base-package="aaa">
<context:include-filter
type="annotation"
expression="org.springframework.stereotype.Controller"/>
</context:component-scan>
问题来了。
当我
在工程里的src存在这个Test.java文件,
启动服务,然后在浏览器里输入XXXX/aaa.bo,
可以正常执行到Test这个aaa方法
但是,
如果我
把这个Test.java生成class文件,然后再打成一个jar包,
放在另一个工程的WEB-INFO\lib目录下,
当我启动另外的这个工程的时候,
执行XXXX/aaa.bo的时候,就出现了下面的错误
WARN[org.springframework.web.servlet.PageNotFound:1108]No mapping found for HTTP request with URI [/XXXX/aaa.bo] in DispatcherServlet with name 'xxxDispatcher'
请问:
如果控制器打成jar包就不能被spring扫描到了吗?
按说如果放在classpath里,是可以被找到的,
而且反射机制读取的注解也无所谓在不在jar包啊???
那么,这个控制器就不能被打成jar包喽?
打包以后发布给别的工程当作通用的处理也是不行的吧?
还是我的方法有问题,缺少了什么步骤呢?
我潜意识里感觉我好像问了一个傻问题,
或者根本就是在什么地方不允许这么做,我没有意识到。。
求拍醒
谢谢
------解决方案--------------------jar包其实是一个压缩包。
没有打成jar之前,程序寻找相关的东西,比如是一个路径/xxxProj/com/test/action/testAction可以找到,
如果打成jar后,程序寻找相关的东西,上面的就变成/xxxProj/后面是jar里面的资源。肯定是找不到。
程序找相关文件和在java里面import是不同的。
参考我之前探究类似问题:http://blog.csdn.net/withiter/article/details/11924095
------解决方案--------------------可以找到的吧,打包的时候有个选项add directory entries这个勾选上就没问题了
------解决方案--------------------路径没写入。