java - Spring 外部项目中存在 Autowiring 类

标签 java spring

您好,我有两个项目,一个是休息模块,它具有端点 web.xmldispathcer-servlet.xml,我还有另一个项目具有业务逻辑并作为依赖项添加到 REST 模块。当我在rest模块中自动连接业务项目中存在的bean时,我收到org.springframework.beans.factory.BeanCreationException。但是其余模块中存在的 bean 是 Autowiring 的。

业务模块 com.test.service--包名 BaseService.java

休息模块 com.test.controller --- 包名 BaseController.java

现在我正在 BaseController.java 和我的 Dispatcher-servlet.xml 中 Autowiring BaseService.java 如果我提到它是 Autowiring BaseService.java bean 但是 它不会识别 @RestController 因为 BaseController.java 的基本包名称是 com.test --- 如果我给出

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name '': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private ; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:334)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1218)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:543)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:778)
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:839)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:538)
    at org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:666)
    at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:632)
    at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:680)
    at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:551)
    at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:492)
    at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:136)
    at javax.servlet.GenericServlet.init(GenericServlet.java:161)
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.init(ServletWrapper.java:342)
    ... 91 more
Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire field: private  nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:573)
    at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88)
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:331)
    ... 109 more
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(DefaultListableBeanFactory.java:1380)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1126)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1021)
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:545)
    ... 111 more

最佳答案

Rest 模块看不到 Business 模块中的 Bean,您可能需要执行以下操作:

@Configuration
@ComponentScan(basePackages = "org.something.business")
public class BusinessConfig {

}


@Configuration
@Import(BusinessConfig.class)
@ComponentScan(basePackages = "org.something.rest")
public class RestConfig {

}

关于java - Spring 外部项目中存在 Autowiring 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50398663/

相关文章:

java - Volley 抽射。发送 JSONObject 作为参数

java - Spring框架模块化的困惑

java - java中如何检测字符串中是否包含URL?

java - Hazelcast 无法与 Spring 安全一起使用(未找到 SessionRegistry bean)

java - 将 MapStruct SPI 自定义 AccessorNamingStrategy 与 Gradle 结合使用

java - 如何使用 WebStart 从 Java 显示和部署 PDF 文档

java - 如何使用jpa在spring中创建没有@Id字段的表?

spring - Spring Security是否具有 'hasAllRole'来执行 'hasAnyRole'的AND版本

java - Spring boot 执行没有错误,但是,没有在服务器上创建表

java - SpringRoo - webapp 中的默认 Id 太冗长,toString 被忽略?