Hi Gary,
Thanks for your reply.
I am just trying to create a simple spring integration project.
It works fine only when i use @Autowired to wire the beans.
Say my config is:
Code:
<bean id="smsAdapter.htm" name="/smsAdapter.htm" class="org.springframework.integration.http.inbound.HttpRequestHandlingMessagingGateway">
<constructor-arg value="true" />
<property name="requestChannel" ref="smsChannel" />
<property name="replyChannel" ref="gatewayChannel" />
<property name="supportedMethodNames" >
<list>
<value>GET</value>
</list>
</property>
</bean>
<int:transformer id="smsSyncMasters" input-channel="smsChannel"
output-channel="gatewayChannel" ref="messageReceiver" >
</int:transformer>
<bean id="messageReceiver" class="com.test.messaging.MessageReceiver" />
<bean id="messageService" class="com.test.messaging.MessageService" />
My message Receiver class is as follows:
Code:
public class MessageReceiver
{
@Autowired
private ImessageService messageService;
public Message<String> recieveRequest(Message<Map<String,List<String>>> smsData)
{
System.out.println("Request Received::"+smsData.getPayload());
Map<String,List<String>> dataString = smsData.getPayload();
List<String> lists = dataString.get("content");
System.out.println("Content list "+lists);
String data = messageService.get(lists.get(0));
System.out.println("Data is "+data);
return MessageBuilder.withPayload(data).build();
}
}
If i Autowire my messageService property, i get a response back.
But if i use a setter injection instead of Autowire, i dont get any response from the messaging gateway.
EG:
Code:
public class MessageReceiver
{
private ImessageService messageService;
public void setMessageService(imessageService args)
{
this.messageService = args;
}
public imessageService getMessageService()
{
return this.messageService;
}
public Message<String> recieveRequest(Message<Map<String,List<String>>> smsData)
{
System.out.println("Request Received::"+smsData.getPayload());
Map<String,List<String>> dataString = smsData.getPayload();
List<String> lists = dataString.get("content");
System.out.println("Content list "+lists);
String data = messageService.get(lists.get(0));
System.out.println("Data is "+data);
return MessageBuilder.withPayload(data).build();
}
}
change in configuration
<bean id="messageReceiver" class="com.test.messaging.MessageReceiver" >
<property name="messageService" ref="messageService"/>
</bean>
Setter injection gives me no output whereas Autowire works properly.
Hope you understood the problem.
Regards,
Annuk