我有一个spring web应用程序,它接收一个外部jar,其中包含packakge com.x.y.controller中的一些带注释的控制器。
我在spring-servlet.xml
中的组件扫描路径中包含了com.x.y.controller包<context:component-scan base-package="com.x.y.controller" />.
但是当我将应用程序部署到我的本地tomcat服务器时,我的外部jar中的那些控制器bean不会被创建。
但是,当我构建应用程序时将jar提取到类路径中(意味着将我的包完全扩展到我的Web应用程序类路径中),一切似乎都运行良好。这对我来说似乎很奇怪,因为我们在外部jar中也有一些@component注释的服务类。而这些课似乎运作良好。
有人知道这是否是春天的预期行为?或者我错过了一些弹簧配置来找到那些控制器?
目前在开发过程中,如果我更改了一个类,即使该类在外部jar中,更改也会反映到tomcat而不进行重建。如果我需要提取jar以使这些控制器工作,那么即使重新启动服务器,tomcat似乎也没有对这些控制器进行更改。需要重建才能再次提取jar以使任何更改生效。这对于发展来说非常痛苦。春天我比较新。如果我必须采取这种方式,是否有人能够找到解决方案?
答案 0 :(得分:1)
确保在类路径中存在external.jar(通过添加到maven依赖项,eclipse项目设置,使用-cp jvm命令行参数等),并且只需引用外部.jar中的类的包名称即可想要包括。
将<context:annotation-config/>
添加到spring-servlet.xml