Spring 4.0 - Evolution or Revolution

2,277 views

Published on

Presentation about the changes in Spring 4.0 plus an Introduction to Spring XD and Spring Boot.

Published in: Software
0 Comments
6 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,277
On SlideShare
0
From Embeds
0
Number of Embeds
18
Actions
Shares
0
Downloads
71
Comments
0
Likes
6
Embeds 0
No embeds

No notes for slide

Spring 4.0 - Evolution or Revolution

  1. 1. Spring 4.0 - Evolution or Revolution Dominique Bartholdi, Raffael Schmid 
 Trivadis AG
  2. 2. “work with Java 8 and other JVM languages (e.g. support Lambdas, …)” “responding to, and setting trends in (Developer Productivity), Big Data, Cloud, REST and Micro Service Architecture” -Adrian Colyer, CTO Application Fabric at Pivotal
  3. 3. Agenda INTRODUCTION MODERNISATION BIG DATA MICRO SERVICE ARCHITECTURE CONCLUSION * not our focus
  4. 4. Introduction INTRODUCTION MODERNISATION BIG DATA MICRO SERVICE ARCHITECTURE CONCLUSION * not our focus
  5. 5. a bunch of history 2004 Spring 1.0: “lightweight” container (DI) AOP interception Jdbc abstraction, Transaction support JPetStore, Petclinic 2006 2007 Spring 2.0: bean configuration dialects (make common tasks easier) Spring 2.5: reduce XML based configuration custom namespaces Spring 3.0: task scheduling, … with annotation support REST web apps JEE features Spring 4.0 / Spring IO
 (Yummy Noodle Bar) 20132009
  6. 6. Platform Overview Core Framework Security Groovy Reactor Relational Non-Relational Data Integration Batch Big DataWeb Workload
 Types Execution Spring XD Spring Boot Grails * Modernisation Big Data * * * Micro Services
 (Developer Productivity) Spring 4.0
  7. 7. Spring 4.0 INTRODUCTION MODERNISATION BIG DATA MICRO SERVICE ARCHITECTURE CONCLUSION * not our focus
  8. 8. Java 8 Lambdas with Spring's JdbcTemplate JdbcTemplate jt = new JdbcTemplate(); jt.query(QUERY, new PreparedStatementSetter() { @Override
 public void setValues(PreparedStatement ps) throws SQLException { ps.setString(1, “Sales");
 } }, new RowMapper<Person>() { @Override
 public Person mapRow(ResultSet rs, int rowNum) throws SQLException {
 return new Person(rs.getString(1), rs.getInt(2));
 }
 });
  9. 9. Java 8 Lambdas with Spring's JdbcTemplate JdbcTemplate jt = new JdbcTemplate(dataSource); jt.query( QUERY, 
 ps -> ps.setString(1, “Sales"), 
 (rs, row) -> new Person(rs.getString(1), rs.getInt(2))
 );
  10. 10. JSR 310: 
 Date & Time public class Customer { @DateTimeFormat(iso=ISO.DATE) //default
 private LocalDate birthDate; @DateTimeFormat(pattern="M/d/yy h:mm")
 private LocalDateTime lastContact;
 …
 }
  11. 11. Generics-based Injection Matching @Service
 public class BookService { @Autowired
 public BookService(Repository<Book> repo) { ... } }
  12. 12. Generics-based Injection Matching @Bean
 public Repository<Book> bookRepository() { return new BookRepositoryImpl(); }
  13. 13. Web Sockets @Configuration
 @EnableWebSocket
 public class MyWebSocketConfig implements WebSocketConfigurer { public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) { WebSocketHandler echoHandler = new EchoHandler();
 registry.addHandler(echoHandler, "/echo").withSockJS(); } } public interface WebSocketHandler { void handleMessage(WebSocketSession s, WebSocketMessage<?> m); }
  14. 14. and many more… Conditional Bean definitions @Conditional @Autowired @Lazy on injection points @Order injection of arrays and lists Groovy style Spring configs
  15. 15. BIG DATA INTRODUCTION MODERNISATION BIG DATA MICRO SERVICE ARCHITECTURE CONCLUSION
  16. 16. -Pivotal “Spring XD (Extreme Data) is a unified, distributed, and extensible service for data ingestion, real time analytics, batch
 processing, and data export.” Spring XD
  17. 17. Spring XD Combining established Spring Technology: Spring Integration, Spring Batch and Spring Data Providing a scalable container architecture Domain Specific Language (DSL) for configuration
  18. 18. Single vs Distributed XD Admin XD Container Module Module XD Admin XD Container Module Module XD Container Module Module single node distributed nodes in-memory rabbit or redis
  19. 19. from source to sink Sources TAP Real time analytics Processor Sink Storage Batch Jobs STREAM JOBS
  20. 20. Sources - HTTP - Tail - File - Mail - Twitter Search - Twitter Stream - Gemfire - Gemfire CQ - Syslog - TCP - TCP Client - JMS - RabbitMQ - Time - MQTT
  21. 21. Stream Config Create the stream
 xd:> stream create --definition "HTTP | file" --name mystream use pipe (|) to connect source “HTTP” to sink “file” set name of stream to “mystream” Remove the stream
 xd:> stream destroy —name mystream
  22. 22. Spring XD Demo twitter stream log language counter tweet counter stream create tweets --definition
 "twitterstream | log” stream create tweetcount --definition
 "tap:stream:tweets > aggregatecounter” stream create tweetlang --definition 
 "tap:stream:tweets > field-value-counter --fieldName=lang"
  23. 23. MICRO SERVICE ARCHITECTURE INTRODUCTION MODERNISATION BIG DATA MICRO SERVICE ARCHITECTURE CONCLUSION
  24. 24. What’s exactly a MICRO SERVICE ARCHITECTURE? Develop a single application as suite of small services Organise services around business capabilities (not technologies) Smart endpoints, dumb pipes (less BPEL, more REST) Services do one thing (small enough to throw away, fit into the head) * http://martinfowler.com/articles/microservices.html
  25. 25. MICRO SERVICE vs. monolithic architecture * http://martinfowler.com/articles/microservices.html functionality in one single process scaling by replicating the monolith a micro architecture puts each functionality into a service scaling by distributing services
  26. 26. Objectives for MICRO SERVICES simple packaging (executable jar) -> embedded web containers monitoring, expose insights fast instantiation polyglot persistence (SQL, NoSQL) …
  27. 27. Spring Boot comes into play Spring Boot makes it easy to create stand-alone (Spring based) applications that you can “just run” Radically faster getting started experience Well defined set of dependencies Auto-configuration “Non-functional” features out of the box Metrics, Counters, Monitoring with Actuator SSH access through remote shell
  28. 28. Spring Boot by Example
  29. 29. Spring Boot Conclusion Not production-ready yet (version 1.0.0 still RC 5), but surprisingly stable Packaging not only JAR Will influence a bunch of other Spring Projects (e.g. Spring XD, Roo, etc.) Perfect tool for quickly building Spring based applications
  30. 30. CONCLUSION INTRODUCTION MODERNISATION BIG DATA MICRO SERVICE ARCHITECTURE CONCLUSION * not our focus
  31. 31. Overall Spring 4.0 evolved over the last years Spring IO most probably a revolutionary approach (not only in terms of marketing)
  32. 32. Questions Dominique Bartholdi
 emaiL: dominique.bartholdi@trivadis.com ! Raffael Schmid
 emaiL: raffael.schmid@trivadis.com

×