【发布时间】:2015-06-16 18:07:38
【问题描述】:
我创建了一个模块/jar,并将其用作实用工具库。我在那里创建了一个服务,如下所示:
@Service
public class PermissionsService { ... }
...它驻留在此处的包中:com.inin.architect.permissions 在我的主应用程序中,我正在引用/加载这个 jar(即设置为maven POM.xml 文件)像这样:
<dependency>
<groupId>com.inin.architect</groupId>
<artifactId>permissions</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
在应用程序中,我想使用该服务,例如:
@Autowired
PermissionsService permissions
在应用程序的 spring 设置中,我有这个:
@Configuration
@EnableWebMvc
@ComponentScan(basePackages = { "com.inin.generator", "com.inin.architect.permissions" })
public class WebConfig extends WebMvcConfigurerAdapter implements ServletContextAware { }
但是,当我在 tomcat 下运行我的应用程序时,它抱怨 PermissionsService 没有 bean:“org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type .. 。”
那么,我怎样才能将 bean 从 lib 带入我的应用程序?肯定有办法的。您是否必须将库设置为完整的 Spring MVC 应用程序才能正常工作?即你是否也必须在库中设置@Configuration 和@ComponentScan?
【问题讨论】:
-
这绝对是可能的。首先要检查的是您的外部 jar 文件是否与其他所有内容一起部署到了 tomcat。有时这取决于您的部署方式,而不是弹簧自动装配。
-
Spring是否扫描了包含这个bean的包?为什么不提供相关代码和配置?
-
如果这些是真实姓名,您应该遵循通常的命名约定,即类名以大写开头。
-
@AshleyFrieze - 好点。我成功地将它作为我的 maven pom 文件中的依赖项拉入,并且应用程序编译,但是我如何确定 util jar 也与应用程序一起部署?
-
@JBNizet - 是的,春天正在扫描它,或者至少我认为它是。
标签: java spring maven spring-mvc