Spring 引导集成 - ref 无法识别适配器的 bean
Spring boot integration - ref not recognizing bean for adapter
我正在尝试构建一个 spring 引导项目与 spring 集成以使用自定义入站通道适配器处理传入的 as2 消息。由于某种原因,适配器的 ref 参数没有找到我的 class.
的 bean 定义
我有以下spring参考资料和网上资源,有以下理解:
- 添加指向我的 spring 集成 xml 文件的
@ImportResource("/integration/integration.xml")
注释将其添加到应用程序上下文
@SpringBootApplication
@ImportResource("/integration/integration.xml")
public class MyApplication implements ServletContextListener {
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
- 在我的 class 上方添加
@Component
注释应该可以让我的 spring 启动应用程序 将其自动检测为 bean
@Component
public class MyHandlerModule extends AbstractProcessorModule implements IProcessorStorageModule {
private static final Logger LOGGER = LoggerFactory.getLogger(MyHandlerModule.class);
@Override
public boolean canHandle(@Nonnull String s, @Nonnull IMessage iMessage, @Nullable Map<String, Object> map) {
LOGGER.info(" Handle Info:" + s);
LOGGER.info(map.toString());
return s.equals(DO_STORE);
}
@SneakyThrows
@Override
public void handle(@Nonnull String s, @Nonnull IMessage iMessage, @Nullable Map<String, Object> map) {
LOGGER.info("----- AS2 MESSAGE RECEIVED !!! ------");
}
}
- 但当 运行 我的
integration.xml
文件中的应用程序出现以下消息时,我收到错误消息:
A component required a bean named 'com.example.MyHandlerModule' that could not be found.
作为参考,这是我的 integration.xml
文件:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:int="http://www.springframework.org/schema/integration"
xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/integration https://www.springframework.org/schema/integration/spring-integration.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">
<int:channel id="as2MessageChannel"/>
<int:inbound-channel-adapter id="as2" ref="com.example.MyHandlerModule" method="handle" channel="as2MessageChannel"/>
</beans>
有什么我遗漏的吗?
错误是正确的:没有任何自定义名称,框架使其类似于 myHandlerModule
- 基于简单 class 名称的驼峰式大小写。包不参与 bean 命名。不确定是什么让您在该参考中指向完全限定的 class 名称…
我正在尝试构建一个 spring 引导项目与 spring 集成以使用自定义入站通道适配器处理传入的 as2 消息。由于某种原因,适配器的 ref 参数没有找到我的 class.
的 bean 定义我有以下spring参考资料和网上资源,有以下理解:
- 添加指向我的 spring 集成 xml 文件的
@ImportResource("/integration/integration.xml")
注释将其添加到应用程序上下文
@SpringBootApplication
@ImportResource("/integration/integration.xml")
public class MyApplication implements ServletContextListener {
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
- 在我的 class 上方添加
@Component
注释应该可以让我的 spring 启动应用程序 将其自动检测为 bean
@Component
public class MyHandlerModule extends AbstractProcessorModule implements IProcessorStorageModule {
private static final Logger LOGGER = LoggerFactory.getLogger(MyHandlerModule.class);
@Override
public boolean canHandle(@Nonnull String s, @Nonnull IMessage iMessage, @Nullable Map<String, Object> map) {
LOGGER.info(" Handle Info:" + s);
LOGGER.info(map.toString());
return s.equals(DO_STORE);
}
@SneakyThrows
@Override
public void handle(@Nonnull String s, @Nonnull IMessage iMessage, @Nullable Map<String, Object> map) {
LOGGER.info("----- AS2 MESSAGE RECEIVED !!! ------");
}
}
- 但当 运行 我的
integration.xml
文件中的应用程序出现以下消息时,我收到错误消息:
A component required a bean named 'com.example.MyHandlerModule' that could not be found.
作为参考,这是我的 integration.xml
文件:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:int="http://www.springframework.org/schema/integration"
xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/integration https://www.springframework.org/schema/integration/spring-integration.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">
<int:channel id="as2MessageChannel"/>
<int:inbound-channel-adapter id="as2" ref="com.example.MyHandlerModule" method="handle" channel="as2MessageChannel"/>
</beans>
有什么我遗漏的吗?
错误是正确的:没有任何自定义名称,框架使其类似于 myHandlerModule
- 基于简单 class 名称的驼峰式大小写。包不参与 bean 命名。不确定是什么让您在该参考中指向完全限定的 class 名称…