java - Spring 的外部项目中存在的自动布线类
问题描述
嗨,我有两个项目,一个是休息模块,它具有端点,web.xml
和dispathcer-servlet.xml
,我有另一个项目,它具有业务逻辑并作为依赖项添加到 REST 模块。当我在 rest 模块中自动连接业务项目中存在的 bean 时,我得到 org.springframework.beans.factory.BeanCreationException
. 但是其余模块中的 bean 是自动装配的。
BusinessModule com.test.service--packagename BaseService.java
RestModule com.test.controller --- 包名 BaseController.java
现在我在 BaseController.java 和我的 dispatcher-servlet.xml 中自动装配 BaseService.java,如果我提到它正在自动装配 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 {
}
推荐阅读
- c# - 绑定到 TreeView SelectedItem 作为 ItemsSource 但不适用于自定义 DependencyProperty
- redux - 从外部组件访问 redux 存储
- python-3.x - 在 Python 3 的类中动态创建内部类?
- flutter - 如何隐藏文本框边框后面的东西?
- ios - UIScrollView 与其他 UIElement 重叠,因此它们不再可点击
- excel - 工作日功能,但如果是实际工作日则返回相同的日期
- loops - 如何在javascript中批量迭代地图?
- sql - Oracle SQL——查找上周未显示的新用户
- excel - 使用 OR 和 Cells.Find 出现多个错误 - 需要 RTE424 对象,RTE13 类型不匹配,未设置 E91 块变量
- java - 如何找到接口方法的 ONE 实现的用法