Skip to content

Instantly share code, notes, and snippets.

public class ResultServiceActivator {
@ServiceActivator(inputChannel = "personOutput")
public void handle(Person person) {
System.out.println(String.format("Person retrieved: %s", person));
}
}
@ComponentScan("xpadro.spring.integration.mongodb")
@IntegrationComponentScan("xpadro.spring.integration.mongodb")
public class JavaConfigQueryConfiguration {
@MessagingGateway
public interface PersonService {
@Gateway(requestChannel = "personInput")
void send(RequestMessage requestMessage);
}
personService.send(new RequestMessage("{id : 3}"));
public void handle(List<Person> persons) {
String names = persons.stream().map(Person::getName).collect(Collectors.joining(", "));
System.out.println(String.format("Persons retrieved: %s", names));
}
private MongoDbOutboundGatewaySpec outboundGateway(MongoDbFactory mongo) {
return MongoDb.outboundGateway(mongo)
.queryExpression("payload.data")
.collectionNameExpression(new LiteralExpression("person"))
.entityClass(Person.class)
.maxResults(2);
}
personService.send(new RequestMessage("{}"));
private MongoDbOutboundGatewaySpec outboundGateway(MongoDbFactory mongo) {
return MongoDb.outboundGateway(mongo)
.queryExpression("payload.data")
.collectionNameExpression(new LiteralExpression("person"))
.expectSingleResult(true)
.entityClass(Person.class);
}
personService.send(new RequestMessage("{id : 2}"));
@SpringBootApplication
@EnableIntegration
@Import(JavaDSLQueryConfiguration.class)
public class JavaDSLQueryApplication extends AbstractApplication {
public static void main(String[] args) {
ConfigurableApplicationContext context = SpringApplication.run(JavaDSLQueryApplication.class, args);
new JavaDSLQueryApplication().start(context);
}
public class ResultHandler {
public void handle(Person person) {
System.out.println(String.format("Person retrieved: %s", person));
}
}