Slide 1

Slide 1 text

Spring forward an introduction to Spring boot and Thymeleaf for developers Frank van der Linden Full stack Developer

Slide 2

Slide 2 text

Social Connections 15 Munich, September 16-18 2019

Slide 3

Slide 3 text

Social Connections 15 Munich, September 16-18 2019 About me • Freelance Full stack developer • Owner of elstar IT • Curious of new technology • IBM Champion 2013, 2014, 2017, 2018 and 2019 • HCL Master 2019

Slide 4

Slide 4 text

Social Connections 15 Munich, September 16-18 2019 How to proceed • What is Spring boot and Thymeleaf • How to start • Syntax • Security • Bonus - new possibilities

Slide 5

Slide 5 text

Social Connections 15 Munich, September 16-18 2019 Spring Forward Starter - demo project https://github.com/flinden68/spring-forward-starter

Slide 6

Slide 6 text

Social Connections 15 Munich, September 16-18 2019 What is Spring boot and Thymeleaf

Slide 7

Slide 7 text

Social Connections 15 Munich, September 16-18 2019

Slide 8

Slide 8 text

Social Connections 15 Munich, September 16-18 2019 Spring boot • Open source, Pivotal is coordinating the releases • Spring boot creates Spring (Java) based applications • Embedded Tomcat makes it ‘just’ run everywhere • Auto configure as much as possible • Built in metrics and health checks • Easy to configure with YAML or property file • Very good documentation and code examples • Fast creation of REST api’s

Slide 9

Slide 9 text

Social Connections 15 Munich, September 16-18 2019 Runs everywhere • With Embedded Tomcat as default the jar ‘just run’ • More choices of embedded web server, like Netty • Will run on Docker • Will run on Cloud Foundry, like IBM Cloud or Pivotal on Azure • Tomcat can by excluding to run it on Websphere Application Server, Tomcat or WildFly (a.k.a JBoss) • Even on Domino as OSGi plugin, http://hasselba.ch/blog/? p=2589

Slide 10

Slide 10 text

Social Connections 15 Munich, September 16-18 2019 Thymeleaf • Is a template engine, like XPages or Freemarker • Based on Java and HTML5 • Very strict, or template will break • Full Spring framework support • Extensible with dialects • Full (and extensible) internationalisation support. • Reusable fragments, like Custom Controls • Extensive documentation

Slide 11

Slide 11 text

Social Connections 15 Munich, September 16-18 2019 How to start

Slide 12

Slide 12 text

Social Connections 15 Munich, September 16-18 2019 How to start • Install Gradle or Maven • Move over to start.spring.io • Or use the Starter in IntelliJ • Fill all the fields and select the required projects (full version) • Generate project • Download zip, unzip and add to Git repository. • Open project in favourite IDE, run ‘mvn clean install’ • Start coding

Slide 13

Slide 13 text

Social Connections 15 Munich, September 16-18 2019 Wizard in IntelliJ

Slide 14

Slide 14 text

Social Connections 15 Munich, September 16-18 2019 Spring boot setup minimal YAML property file

Slide 15

Slide 15 text

Social Connections 15 Munich, September 16-18 2019 Thymeleaf setup add to pom.xml

Slide 16

Slide 16 text

Social Connections 15 Munich, September 16-18 2019 How it works together

Slide 17

Slide 17 text

Social Connections 15 Munich, September 16-18 2019 Syntax

Slide 18

Slide 18 text

Social Connections 15 Munich, September 16-18 2019 Spring boot syntax endpoint to return an object as JSON endpoint to return a thymeleaf template

Slide 19

Slide 19 text

Social Connections 15 Munich, September 16-18 2019 Component scan • Component scan will scan all the packages for @Service, @Controller, @Repository and more @Component(s) • @Autowired will glue everything together

Slide 20

Slide 20 text

Social Connections 15 Munich, September 16-18 2019 Thymeleaf syntax • Include the th namespace to the page • Every html element attribute has a th:…. Equivalent. • Variable Expressions: ${...} • Selection Variable Expressions: *{...} • Message Expressions: #{...} • Link URL Expressions: @{...}

Slide 21

Slide 21 text

Social Connections 15 Munich, September 16-18 2019 Namespace

Slide 22

Slide 22 text

Social Connections 15 Munich, September 16-18 2019 Thymeleaf attributes

Slide 23

Slide 23 text

Social Connections 15 Munich, September 16-18 2019 Variable Expressions

Slide 24

Slide 24 text

Social Connections 15 Munich, September 16-18 2019 Selection Variable Expressions

Slide 25

Slide 25 text

Social Connections 15 Munich, September 16-18 2019 Message Expressions

Slide 26

Slide 26 text

Social Connections 15 Munich, September 16-18 2019 Link URL Expressions resource links links in on a page

Slide 27

Slide 27 text

Social Connections 15 Munich, September 16-18 2019 Global objects

Slide 28

Slide 28 text

Social Connections 15 Munich, September 16-18 2019 Fragments (1)

Slide 29

Slide 29 text

Social Connections 15 Munich, September 16-18 2019 Fragments (2) fragment code use it multiple times

Slide 30

Slide 30 text

Social Connections 15 Munich, September 16-18 2019 Attachments • Forget the UploadedFile provided by IBM, learn MultipartFile • MultipartFile has lots of similarities with UploadedFile, but easier to use. Less code to achieve the same

Slide 31

Slide 31 text

Social Connections 15 Munich, September 16-18 2019 Security

Slide 32

Slide 32 text

Social Connections 15 Munich, September 16-18 2019 Spring Security • Framework for Authentication and Authorisation • Prevention of clickjacking, CORS, cross site request forgery • Integrates with Spring Boot and Thymeleaf • Customisable to the bone • Support for Basic Authentication, SAML2, oAuth and more.

Slide 33

Slide 33 text

Social Connections 15 Munich, September 16-18 2019 Configuration CORS prevention add to pom.xml

Slide 34

Slide 34 text

Social Connections 15 Munich, September 16-18 2019 Spring security in Thymeleaf add to pom.xml add namespace

Slide 35

Slide 35 text

Social Connections 15 Munich, September 16-18 2019 Bonus - new possibilities

Slide 36

Slide 36 text

Social Connections 15 Munich, September 16-18 2019 Lombok • Forget Getters and Setters • Forget toString, hashCode and equals • One @Annotations rules the all (@Data or @Getter and @Setter) • Add logging by @annotations (@Log4j2 or @Slf4j)

Slide 37

Slide 37 text

Social Connections 15 Munich, September 16-18 2019 Lombok add to pom.xml add @Data using the build in logging

Slide 38

Slide 38 text

Social Connections 15 Munich, September 16-18 2019 Swagger • Part of Open API Specification, since v3 • Documentation of API’s • Playground for testing • Add annotation to generate the documentation dynamically

Slide 39

Slide 39 text

Social Connections 15 Munich, September 16-18 2019 Swagger add to pom.xml add a configuration add annotation to endpoint

Slide 40

Slide 40 text

Social Connections 15 Munich, September 16-18 2019 Jenkins • With Jenkins you can build automatically the application • …But also do quality control, do load tests and even deploy. • JenkinsFile should be in the root of the GIT Repository • Groovy is the language for JenkinsFile

Slide 41

Slide 41 text

Social Connections 15 Munich, September 16-18 2019 Jenkins file

Slide 42

Slide 42 text

Social Connections 15 Munich, September 16-18 2019 Questions

Slide 43

Slide 43 text

Social Connections 15 Munich, September 16-18 2019 Reach out to me @flinden68 https://www.elstarit.nl [email protected] https://nl.linkedin.com/in/flinden68 https://github.com/flinden68

Slide 44

Slide 44 text

Social Connections 15 Munich, September 16-18 2019 Resources •Spring Initializr •http://start.spring.io/ •Thymeleaf documentation •http://www.thymeleaf.org/ •Spring Boot • https://projects.spring.io/spring-boot/ •Lombok • https://projectlombok.org/ •Jenkins • https://jenkins.io/

Slide 45

Slide 45 text

Social Connections 15 Munich, September 16-18 2019 Resources •Swagger •http://swagger.io •Thymeleaf documentation •http://www.thymeleaf.org/ •Maven • https://maven.apache.org/ •Gradle • https://gradle.org/ •Spring Forward Starter • https://github.com/flinden68/spring-forward-starter

Slide 46

Slide 46 text

Social Connections 15 Munich, September 16-18 2019

Slide 47

Slide 47 text

No content