如何在Tomcat中使类对Spring可用?

时间:2019-04-01 11:17:38

标签: java spring maven tomcat module

我正在使用具有模块化体系结构的应用程序-每个模块都包含在运行于Tomcat之上的WAR文件中。其中一个模块允许用户使用请求Interceptor接口扩展其功能,该接口@Autowire由Spring插入类。

我正在开发一个自定义的拦截器,并希望将其提供给Spring以在模块内自动装配。到目前为止,我一直在构建包含拦截器的模块WAR的自定义版本,但是我不认为这是一种干净的方法,因为其想法是使应用程序易于扩展,并且出于这个原因构建我自己的fork似乎几乎消除了Interceptor界面的优势。

我知道一种可能是将WAR打开(它只是一个ZIP存档)并在其中放一个自定义JAR,但这也不对。也许有一种使用Maven添加自定义JAR的方法?有行业标准的方法吗?

1 个答案:

答案 0 :(得分:0)

我认为我至少有部分答案,欢迎大家提供更好的答案。

有一个有用的文档page about class loading in Tomcat。它描述了从何处加载类,对于休闲读者来说最有趣的代码段摘录如下:

$CATALINA_BASE/lib中未打包的类和资源
$CATALINA_BASE/lib中的JAR文件
$CATALINA_HOME/lib中的解压缩类和资源
$CATALINA_HOME/lib

中的JAR文件

WebappX —为部署在单个Tomcat实例中的每个Web应用程序创建一个类加载器。 Web应用程序的/WEB-INF/classes目录中的所有解压缩类和资源,以及Web应用程序的/WEB-INF/lib目录下的JAR文件中的类和资源,对于此Web应用程序都是可见的,但对其他Web用户不可见。