Created by Michael T Minella / @michaelminella
class ServiceConfiguration extends FunctionalConfiguration {
importClass(classOf[DataSourceConfiguration])
val dataSource:DataSource = getBean("dataSource")
val jdbcTemplate = bean() {
new JdbcTemplate(dataSource)
}
val jdbcTransactionmanager = bean("txManager") {
new JdbcTransactionManager(dataSource)
}
}
import o.sf.jdbc.core.JdbcTemplate
import o.sf.jdbc.datasource.DataSourceTransactionManager
beans {
jdbcTemplate(JdbcTemplate) {
dataSource = dataSource
}
transactionManager(DataSourceTransactionmanager) {
dataSource = dataSource
}
}
@Configuration
@ComponentScan
@Import(DataSourceConfiguration.class)
@EnableTransactionManagement
class ServiceConfiguration {
@Bean
public JdbcTemplate jdbcTemplate(DataSource dataSource) {
return new JdbcTemplate(dataSource);
}
@Bean
public PlatformTransactionManager jdbcTemplateManager(DataSource dataSource) {
return new JdbcTransactionManager(dataSource);
}
}
private Customer map(ResultSet rs, int rowNum) throws SQLException {
return new Customer(rs.getString("name"), rs.getInt("age"));
}
private void build(PreparedStatement ps) throws SQLException {
ps.setString(1, "Mike%");
}
...
jdbcTemplate.query("SELECT name, age FROM customer WHERE name like ?",
this::build,
this::map);
);
JdbcTemplate jt = new JdbcTemplate(dataSource);
jt.query("SELECT name, age FROM person WHERE name like ?",
ps -> { ps.setString(1, "Mike%"); },
(rs, rowNum) -> new Person(rs.getString(1), rs.getInt(2));
);
public class Customer {
@DateTimeFormat(iso=ISO.DATE)
private LocalDate birthDate;
@DateTimeFormat(pattern="M/d/yy h:mm")
private LocalDateTime lastUpdate;
}
@Controller
public class PortfolioController {
...
@MessageMapping("/app/trade")
public void executeTrade(Trade trade, Principal principal) {
trade.setUsername(principal.getName());
this.tradeService.executeTrade(trade);
}
@SubscribeEvent("/app/positions")
public List<PortfolioPosition> subscribeToPortfolios(Principal principal) {
String user = principal.getName();
Portfolio portfolio = this.portfolioService.findPortfolio(user);
return portfolio.getPositions();
}
}
Big Data Terminology | Integration Terminology |
Data flow model Source, Channel, Sink |
EIP Patterns Adapter, Channel, Filter, Transformer, etc. |
Workflow Orchestration Workflow, Action |
Batch Processing Job, Step |
Export Jobs, Connectors |
Batch Processing Jobs, Readers/Writers |
http | hdfs
http --port 8181 | hdfs --directory /xd/1
http --port 8181 | filter --expression='payload?.price > 3.0' | hdfs --directory /xd/1
twittersearch --query=#spring | file
tap:tweets > field-value-counter --fieldName=entities.hashTags.text --counterName=tags