java - 如何@Autowire 从外部 jar 创建的 spring bean?

标签 java spring maven spring-mvc

我创建了一个模块/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?

最佳答案

您必须至少扫描包含要注入(inject)的类的包。例如,使用 Spring 4 注释:

@Configuration
@ComponentScan("com.package.where.my.class.is")
class Config {
...
}

XML配置也是同样的原理

关于java - 如何@Autowire 从外部 jar 创建的 spring bean?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29571304/

相关文章:

java - 递归调用导致栈溢出异常

java - 在 JavaFX 中的图像之间淡入淡出

maven - 找不到 Artifact Jackson-modules-java8 :jar

java - 在 Eclipse 中创建类似于 Spring Petclinic 的项目结构

java - 升级到 Spring 3.2.4 后出现错误 NoClassDefFoundError

java - Oracle Weblogic\MySQL\MySQL 此时意外

java - @InjectMocks 通过构造函数和 setter 注入(inject) @MockBean 无法正常工作

java - android 中 uiautomator.jar 中删除的方法

java - 在没有 Spring Boot 应用程序的情况下使用 Spring Boot Actuator

java - Spring Controller ,返回页面特定区域