Java 为什么POM中的依赖顺序会影响bean可见性
我正在尝试将一个组件连接到现有系统。为此,我在主项目POM文件中包含了对组件(Java 为什么POM中的依赖顺序会影响bean可见性,java,spring,maven,Java,Spring,Maven,我正在尝试将一个组件连接到现有系统。为此,我在主项目POM文件中包含了对组件(DataFilter)的依赖关系 订单1) 从组件DataFilter 当我将依赖项切换到顺序2时(CommandHandlerfirst) ${project.groupId} 命令处理程序 1.0.0-SNAPSHOT ${project.groupId} 数据过滤器 1.0.0-SNAPSHOT 出现以下行为: 主应用程序仍然像上面那样预实例化bean [activemq、解析器、rawStorage
DataFilter
)的依赖关系
订单1)
DataFilter
CommandHandler
first)
${project.groupId}
命令处理程序
1.0.0-SNAPSHOT
${project.groupId}
数据过滤器
1.0.0-SNAPSHOT
出现以下行为:
- 主应用程序仍然像上面那样预实例化bean
[activemq、解析器、rawStorage、commandDAO、CommandService、payloadStorage、payloadRetrieval、rawReply、rawRetrieval、模板、consumerTemplate、应用上下文:beanPostProcessor、应用上下文]
- 组件命令处理程序(该bean在顺序1中不可见)预实例化其bean
[
,iCommandService
]commandDAO
- 在设置camel上下文时,甚至没有提到组件数据过滤器;没有数据过滤器bean的预实例化,没有关于缺少bean的错误
- 驼峰上下文启动并正确构建路由
- 命令处理程序和数据过滤器将其上下文保存在
Beans.xml
中的主应用程序(或blueprint.xml
构建为jar而非捆绑时)packaging-jar-camel-context-xml.txt
- 数据文件管理器可编译为
bundleOSGi
- 没有使用自动连线
- 为什么依赖顺序会影响可见性或不创建bean
- 如何正确地设置它以实现正确创建所有三个组件的所有bean的时刻
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>DataFilter</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>CommandHandler</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>
[activemq,parser,rawStorage,commandDAO,CommandService,payloadStorage,payloadRetrieval,rawReply,rawRetrieval,template,consumerTemplate,app-context:beanPostProcessor,app-context];
[filters,hdop_filter_pass_less_than_4,vdop_filter_pass_less_than_4,speed_filter_pass_less_than_high_speed,event_and_gps_time_diff_less_than_exp_time,fix_type_recomended_to_3dfix,always_pass_when_motion_or_stationary]
Exception encountered during context initialization - cancelling refresh attempt
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'rawReply' defined in class path resource [OSGI-INF/blueprint/packaging-jar-camel-context-xml.txt]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [com.company.product.CommandHandler.InitialClass]: Constructor threw exception; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'iCommandService' is defined
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>CommandHandler</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>DataFilter</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>
[activemq,parser,rawStorage,commandDAO,CommandService,payloadStorage,payloadRetrieval,rawReply,rawRetrieval,template,consumerTemplate,app-context:beanPostProcessor,app-context]