我可以在另一个模块中使用 WebMvcConfigurer 的实例吗?
Can I use an instance of a WebMvcConfigurer in another module?
我编写了一个拦截器来为 SpringBoot Java Rest API 生成服务日志。我有下面的代码来定义自定义 WebMvcConfigurer:
package com.gem.common.interceptors;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class InterceptorConfig implements WebMvcConfigurer {
@Autowired
LoggerInterceptor logInterceptor;
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(logInterceptor);
}
}
我想跨不同模块使用这个 InterceptorConfig。可以打包使用还是需要在每个模块中定义?
我想对于“其他模块”,您是在问是否可以让其他 spring 启动应用程序也可以使用该代码?
如果是这样 - 那么:是的,您可以将其打包在一个 jar 中并将其作为所有其他模块的依赖项添加。我将在下面 post 执行此操作的方法,但是 - 只是为了警告你 - 如果它只是为了那个简单的 class,解决方案将不值得。
简而言之,您需要做的是创建自己的外部工件(这通常是通过 maven 或 gradle 完成的)。您为共享代码创建一个新的 maven 项目。它将需要依赖于一些基础库,以便您可以使用 @Configuration
注释。按照该项目中的描述放置 class,并创建文件 src/main/resources/META-INF/spring.factories
文件。There you'll need to point to that class.
然后构建该项目并将生成的 jar 上传到包存储库。完成后,您可以将其作为依赖项添加到您的项目中。在启动时,Spring 引导将找到 spring.factories
文件并自动包含在其初始化中提到的 classes。
另请注意,这只是一个高层次的解释,您需要了解更多详细信息。 Spring has good documentation on this use case and they also have a demo project to show this extension mechanism.
我编写了一个拦截器来为 SpringBoot Java Rest API 生成服务日志。我有下面的代码来定义自定义 WebMvcConfigurer:
package com.gem.common.interceptors;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class InterceptorConfig implements WebMvcConfigurer {
@Autowired
LoggerInterceptor logInterceptor;
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(logInterceptor);
}
}
我想跨不同模块使用这个 InterceptorConfig。可以打包使用还是需要在每个模块中定义?
我想对于“其他模块”,您是在问是否可以让其他 spring 启动应用程序也可以使用该代码?
如果是这样 - 那么:是的,您可以将其打包在一个 jar 中并将其作为所有其他模块的依赖项添加。我将在下面 post 执行此操作的方法,但是 - 只是为了警告你 - 如果它只是为了那个简单的 class,解决方案将不值得。
简而言之,您需要做的是创建自己的外部工件(这通常是通过 maven 或 gradle 完成的)。您为共享代码创建一个新的 maven 项目。它将需要依赖于一些基础库,以便您可以使用 @Configuration
注释。按照该项目中的描述放置 class,并创建文件 src/main/resources/META-INF/spring.factories
文件。There you'll need to point to that class.
然后构建该项目并将生成的 jar 上传到包存储库。完成后,您可以将其作为依赖项添加到您的项目中。在启动时,Spring 引导将找到 spring.factories
文件并自动包含在其初始化中提到的 classes。
另请注意,这只是一个高层次的解释,您需要了解更多详细信息。 Spring has good documentation on this use case and they also have a demo project to show this extension mechanism.