Apache camel camel process语句中忽略了自动连线批注
我需要在流程步骤中实现数据库连接和查询。 所以,我在bean属性中定义了数据源。 我尝试使用jdbctemplate。 但返回的结果是java.lang.NullPointException camel是否忽略process语句中的自动连线注释? 如果有其他解决方案,请告诉我 多谢各位 CamelContext.xmlApache camel camel process语句中忽略了自动连线批注,apache-camel,spring-camel,Apache Camel,Spring Camel,我需要在流程步骤中实现数据库连接和查询。 所以,我在bean属性中定义了数据源。 我尝试使用jdbctemplate。 但返回的结果是java.lang.NullPointException camel是否忽略process语句中的自动连线注释? 如果有其他解决方案,请告诉我 多谢各位 CamelContext.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:camel="http://camel.apache.org/schema/spring"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
...
http://camel.apache.org/schema/spring/camel-spring.xsd">
<bean class="com.ktds.openmzn.common.bean.ProcFormat" id="procFormat"/>
<bean class="com.ktds.openmzn.common.bean.ProcessDistributor" id="splitChannel"/>
<bean class="org.springframework.jdbc.datasource.DriverManagerDataSource" id="dataSource">
<property name="driverClassName" value="${spring.datasource.driver-class-name}"/>
<property name="url" value="${spring.datasource.url}"/>
<property name="username" value="${spring.datasource.username}"/>
<property name="password" value="${spring.datasource.password}"/>
</bean>
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource" />
</bean>
<bean class="com.ktds.openmzn.common.bean.FilePathProcessor" id="filePathProcessor"/>
...
<camelContext id="camelContext-f611cb6c-d516-4346-9adc-5512d327a88d"
trace="true" xmlns="http://camel.apache.org/schema/spring">
<camel:route id="fixed_processor">
<camel:from id="_from1" uri="timer:fromPollTimer?period=20000"/>
<camel:process id="_sourceDirectory" ref="filePathProcessor"/>
...
结果
Message History
---------------------------------------------------------------------------------------------------------------------------------------
RouteId ProcessorId Processor
Elapsed (ms)
[fixed_processor ] [fixed_processor ] [timer://fromPollTimer?period=20000 ] [ 0]
[fixed_processor ] [_sourceDirectory ] [ref:filePathProcessor ] [ 0]
Stacktrace
---------------------------------------------------------------------------------------------------------------------------------------
java.lang.NullPointerException: null
at com.ktds.openmzn.common.bean.FilePathProcessor.process(FilePathProcessor.java:20) ~[classes/:na]
at org.apache.camel.processor.DelegateSyncProcessor.process(DelegateSyncProcessor.java:63) ~[camel-core-2.23.1.jar:2.23.1]
当然它是空的,因为您是通过新构造函数自己创建实例的:
instance = new SetFilePath();
@Autowired
来自spring框架,您基本上需要使用spring为您创建这个bean
有不同的方法可以做到这一点,例如在XML文件中创建
,然后通过setter
在处理器上进行配置
您还可以让spring/camel创建bean实例而不是新的构造函数,但这需要一些camel API来完成
public static SetFilePath getInstance(CamelContext camel)
if (instance == null) {
instance = camel.getInjector().newInstance(SetFilePath.class);
}
然后通过注入器通过spring框架创建bean实例,spring框架进行自动连接。当然是空的,因为您是通过新构造函数自己创建实例的:
instance = new SetFilePath();
@Autowired
来自spring框架,您基本上需要使用spring为您创建这个bean
有不同的方法可以做到这一点,例如在XML文件中创建
,然后通过setter
在处理器上进行配置
您还可以让spring/camel创建bean实例而不是新的构造函数,但这需要一些camel API来完成
public static SetFilePath getInstance(CamelContext camel)
if (instance == null) {
instance = camel.getInjector().newInstance(SetFilePath.class);
}
然后,它将通过注入器通过spring框架创建bean实例,spring框架进行自动连接。FilePathProcessor的第20行是什么??FilePathProcessor从db.List rows=SetFilePath.getInstance().getPathList(“aaaa”);这段代码在第20行。FilePathProcessor的第20行是什么?FilePathProcessor从db.List rows=SetFilePath.getInstance().getPathList(“aaaa”);这段代码在第20行,我应该从Springbean配置数据源。