jar包中有个ApplicationListener的实现类,发现启动项目时总是不能自动执行。我在项目中直接用写实现类也可以自动执行,我怀疑是spring扫描不到,建了相同的文件夹相同的类也可以自动执行。
最后怀疑是导出的jar包有问题。确定源码没问题后,将问题缩小在了导出jar时几个勾选上。
参考博客中提到
Add directory entries 增加目录条目(很少人知道这个选项有什么用,其实他真的很有用!
在spring中有个这样的标签 <context:component-scan />,它可以用来自动扫描包, 但是如果在你打的jar包里要不勾选Add directory entries,那么你这个jar包,就不能spring的jar包那样 可以被扫描到)
豁然开朗,勾选后导出的jar包,果然能在启动时自动执行ApplicationListener的实现类
附:参考文章中的相关说明
* Export generated class files and resources 表示只导出生成的.class文件和其他资源文件 * Export all output folders for checked projects 表示导出选中项目的所有文件夹 * Export java source file and resouces 表示导出的jar包中将包含你的源代码*.java,如果你不想泄漏源代码,那么就不要选这项了 * Export refactorings for checked projects 把一些重构的信息文件也包含进去 在Select the export destination中选择导出的jar的路径: Options:的操作 Compress the contents of the JAR file 压缩精简 jar文件的内容 Add directory entries 增加目录条目(很少人知道这个选项有什么用,其实他真的很有用! 在spring中有个这样的标签 <context:component-scan />,它可以用来自动扫描包, 但是如果在你打的jar包里要不勾选Add directory entries,那么你这个jar包,就不能spring的jar包那样 可以被扫描到) Overwrite existing files without warning 没有警告的情况下覆盖现有的文件 Options:的操作我喜欢都勾选