SlideShare a Scribd company logo
Licensed under Creative Commons Attribution-ShareAlike 4.0 International License
UI Prototype
Spring Boot + Thymeleaf
Tim Donohue, DuraSpace
tdonohue@duraspace.org
Technologies used
‱ Spring Boot
– Newer, but built on Spring MVC
‱ See Cineca’s prototype for MVC overview
– Convention over configuration
‱ Prepackaged Maven / Gradle plugins
– Embeddable Tomcat/Jetty (in JAR)
– Autoconfiguration of Spring
‱ No requirement for XML configs
– Autoconfiguration of many templating
engines (Thymeleaf being one)
Technologies used
‱ Thymeleaf
– Java/HTML5 templating engine
– Looks like HTML (mostly)
– Natural templating (view static HTML)
– Supports HTML “fragments”
– FORCES separating content from layout
– Spring specific integrations
‱ Bootstrap
Technologies used
‱ DSpace 6 (pre-6) Java API
– With Enhanced Configuration Scheme
(local.cfg / Apache Commons Config)
‱ Provides auto-reloadable configs
‱ Spring Security (AutnN/Z)
– Used test “in memory” authN
– AuthZ lets you limit access via Path
– Very easy to use with Spring Boot
Spring Boot
‱ Configured to build a runnable JAR
(embedded Tomcat)
‱ Enabled Thymeleaf plugin
‱ Enabled Spring Security plugin
‱ Spring Boot Application configuration
– Application class
– application.properties
Thymeleaf
‱ Looks like HTML, with “th:” attributes
– th:fragment => th:include, th:replace
– th:text (replace text)
– th:if / th:unless
– th:each (loop Lists/Iterable/Map/array)
– th:with (sets a local variable)
– th:href (dynamically build links)
Thymeleaf
‱ Looks like HTML, with “th:” attributes
– th:fragment => th:include, th:replace
– th:text (replace text / adds i18n)
– th:if / th:unless
– th:each (loop Lists/Iterable/Map/array)
– th:with (sets a local variable)
– th:href (dynamically build links)
‱ (Very) basic Java calls supported
Thymeleaf
‱ Also some special expressions /
syntax:
– ${variable} => output value of variable
– #{i18n.key} => output i18n msg
– @{path} => output a link/URL
‱ And Java utility objects:
– #lists.isEmpty(java.util.List)
– #arrays
– #dates (formatting java.util.Date objs)
Prototype Theming
‱ Basic at this point
– /static/themes directory
– Themes consist of a layout.html and
CSS, images, JS
‱ Custom code in DSpaceController
– Allows one to customize theme loaded
based on paths (in local.cfg)
Theming with Thymeleaf
‱ layout.html
– Contains all our theme “fragments”
– (could split these into separate files,
e.g. header.html, footer.hml)
‱ Thymeleaf can select fragments
– by name
– by DOM selects (e.g. #id selects an
HTML tag by ‘id’)
AuthN/AuthZ
‱ Spring Security
– Not yet integrated with DSpace’s Auth
‱ AuthN is using Spring Security’s “test
mode” (in memory auth)
‱ AuthN/Z Defined entirely in
WebSecurityConfig
‱ Only one restricted path (/admin)
Demo
Prototype code / docs
‱ https://github.com/tdonohue/DSpac
e-Spring-Boot
– See README for documentation
Limits of Prototype
‱ No actual item editing/creation
– Concentrated more on testing
Thymeleaf extendability
‱ Spring Security AuthN/Z not
integrated with DSpace’s

More Related Content

PPTX
DSpace 4.2 Basics & Configuration
PPTX
DSpace 4.2 Transmission: Import/Export
PDF
Making DSpace XMLUI Your Own
PPTX
DSpace 4.2 XMLUI Theming
PPT
DSpace Tutorial : Open Source Digital Library
PDF
Improving DSpace Backups, Restores & Migrations
PPTX
Pragmatische Plone Projekte
PDF
Introduction to DSpace
DSpace 4.2 Basics & Configuration
DSpace 4.2 Transmission: Import/Export
Making DSpace XMLUI Your Own
DSpace 4.2 XMLUI Theming
DSpace Tutorial : Open Source Digital Library
Improving DSpace Backups, Restores & Migrations
Pragmatische Plone Projekte
Introduction to DSpace

What's hot (20)

PDF
Pragmatic plone projects
PPTX
Pragmatic plone projects
PPT
Content Storage With Apache Jackrabbit
PDF
Perl in the Real World
 
PPTX
Saving Time with WP-CLI
PPTX
Drupal, varnish, esi - Toulouse November 2
PDF
JCR - Java Content Repositories
PDF
You Got React.js in My PHP
PDF
DSpace: Technical Basics
PDF
Best Practices for WordPress
PDF
Software Development with Open Source
 
PPTX
SBT by Aform Research, Saulius Valatka
PDF
Modernizing WordPress Search with Elasticsearch
PDF
Introduction to CouchDB
 
PPTX
Content Modeling Behavior
PPTX
02 beginning code first
PPTX
Best Practices for Building WordPress Applications
PPTX
Best Practices for WordPress in Enterprise
PDF
PyFilesystem
PDF
Google app-engine-cloudcamplagos2011
 
Pragmatic plone projects
Pragmatic plone projects
Content Storage With Apache Jackrabbit
Perl in the Real World
 
Saving Time with WP-CLI
Drupal, varnish, esi - Toulouse November 2
JCR - Java Content Repositories
You Got React.js in My PHP
DSpace: Technical Basics
Best Practices for WordPress
Software Development with Open Source
 
SBT by Aform Research, Saulius Valatka
Modernizing WordPress Search with Elasticsearch
Introduction to CouchDB
 
Content Modeling Behavior
02 beginning code first
Best Practices for Building WordPress Applications
Best Practices for WordPress in Enterprise
PyFilesystem
Google app-engine-cloudcamplagos2011
 
Ad

Similar to DSpace UI Prototype Challenge: Spring Boot + Thymeleaf (20)

PDF
NCUG 2019: Spring forward: an introduction to Spring boot and Thymeleaf for (...
PDF
Icon UK 2018 - Spring forward: an introduction to Spring boot and Thymeleaf f...
PDF
Modern Java web applications with Spring Boot and Thymeleaf
PDF
Spring I/O 2012: Natural Templating in Spring MVC with Thymeleaf
PDF
Spring forward: an introduction to Spring boot and Thymeleaf
PPTX
Spring boot
 
PPTX
Spring Web Presentation 123143242341234234
KEY
Titanium Mobile Intro
PPTX
Java on Rails SV Code Camp 2014
PPTX
SpringBootCompleteBootcamp.pptx
PPTX
SoftwareUniversity seminar fast REST Api with Spring
PDF
Sencha and Spring (Spring 2GX 2013)
 
PPT
Titanium Meetup Deck
KEY
Summer - The HTML5 Library for Java and Scala
KEY
Multi client Development with Spring
PDF
A presentationon SPRING-BOOT and CRUD operation
PDF
2013 java2 days web apps - a different angle
PPTX
Spring Web Presentation - Framework and Its Ecosystem
PDF
Introduction to thymeleaf
PPTX
Spring
NCUG 2019: Spring forward: an introduction to Spring boot and Thymeleaf for (...
Icon UK 2018 - Spring forward: an introduction to Spring boot and Thymeleaf f...
Modern Java web applications with Spring Boot and Thymeleaf
Spring I/O 2012: Natural Templating in Spring MVC with Thymeleaf
Spring forward: an introduction to Spring boot and Thymeleaf
Spring boot
 
Spring Web Presentation 123143242341234234
Titanium Mobile Intro
Java on Rails SV Code Camp 2014
SpringBootCompleteBootcamp.pptx
SoftwareUniversity seminar fast REST Api with Spring
Sencha and Spring (Spring 2GX 2013)
 
Titanium Meetup Deck
Summer - The HTML5 Library for Java and Scala
Multi client Development with Spring
A presentationon SPRING-BOOT and CRUD operation
2013 java2 days web apps - a different angle
Spring Web Presentation - Framework and Its Ecosystem
Introduction to thymeleaf
Spring
Ad

More from Tim Donohue (14)

PDF
On the Road to DSpace 7: Angular UI + REST
PPT
Introducing the New DSpace User Interface
PPT
Discussion on DSpace's Two UIs : DuraSpace 2015 Summit
PPT
How to "Hack" the DSpace Community
PPT
DSpace Overview / Roadmap 2014
PPT
DSpace RoadMap & Vision 2013 (OR13)
PPT
DSpace RoadMap 2012
PPT
DSpace RoadMap and Vision (at 2013 OAI8 DSpace User Group)
PDF
Future Trends for Repositories
PDF
DSpace & DuraCloud Integrations
PDF
DSpace RoadMap 2011
PDF
DSpace RoadMap 2010
PDF
BibApp 1.0 : Information In, Impact Out
PDF
Digital Preservation in the Wild
On the Road to DSpace 7: Angular UI + REST
Introducing the New DSpace User Interface
Discussion on DSpace's Two UIs : DuraSpace 2015 Summit
How to "Hack" the DSpace Community
DSpace Overview / Roadmap 2014
DSpace RoadMap & Vision 2013 (OR13)
DSpace RoadMap 2012
DSpace RoadMap and Vision (at 2013 OAI8 DSpace User Group)
Future Trends for Repositories
DSpace & DuraCloud Integrations
DSpace RoadMap 2011
DSpace RoadMap 2010
BibApp 1.0 : Information In, Impact Out
Digital Preservation in the Wild

Recently uploaded (20)

PDF
2025 Textile ERP Trends: SAP, Odoo & Oracle
PDF
Flood Susceptibility Mapping Using Image-Based 2D-CNN Deep Learnin. Overview ...
PDF
Adobe Illustrator 28.6 Crack My Vision of Vector Design
PDF
Which alternative to Crystal Reports is best for small or large businesses.pdf
PDF
How to Choose the Right IT Partner for Your Business in Malaysia
PPTX
Lecture 3: Operating Systems Introduction to Computer Hardware Systems
 
PPTX
Operating system designcfffgfgggggggvggggggggg
PDF
Navsoft: AI-Powered Business Solutions & Custom Software Development
PDF
Raksha Bandhan Grocery Pricing Trends in India 2025.pdf
PPTX
Odoo POS Development Services by CandidRoot Solutions
PDF
Wondershare Filmora 15 Crack With Activation Key [2025
PDF
Understanding Forklifts - TECH EHS Solution
PPTX
ai tools demonstartion for schools and inter college
PDF
T3DD25 TYPO3 Content Blocks - Deep Dive by André Kraus
PDF
Nekopoi APK 2025 free lastest update
PPTX
VVF-Customer-Presentation2025-Ver1.9.pptx
PDF
Addressing The Cult of Project Management Tools-Why Disconnected Work is Hold...
PPTX
L1 - Introduction to python Backend.pptx
PDF
How Creative Agencies Leverage Project Management Software.pdf
PPTX
Agentic AI : A Practical Guide. Undersating, Implementing and Scaling Autono...
2025 Textile ERP Trends: SAP, Odoo & Oracle
Flood Susceptibility Mapping Using Image-Based 2D-CNN Deep Learnin. Overview ...
Adobe Illustrator 28.6 Crack My Vision of Vector Design
Which alternative to Crystal Reports is best for small or large businesses.pdf
How to Choose the Right IT Partner for Your Business in Malaysia
Lecture 3: Operating Systems Introduction to Computer Hardware Systems
 
Operating system designcfffgfgggggggvggggggggg
Navsoft: AI-Powered Business Solutions & Custom Software Development
Raksha Bandhan Grocery Pricing Trends in India 2025.pdf
Odoo POS Development Services by CandidRoot Solutions
Wondershare Filmora 15 Crack With Activation Key [2025
Understanding Forklifts - TECH EHS Solution
ai tools demonstartion for schools and inter college
T3DD25 TYPO3 Content Blocks - Deep Dive by André Kraus
Nekopoi APK 2025 free lastest update
VVF-Customer-Presentation2025-Ver1.9.pptx
Addressing The Cult of Project Management Tools-Why Disconnected Work is Hold...
L1 - Introduction to python Backend.pptx
How Creative Agencies Leverage Project Management Software.pdf
Agentic AI : A Practical Guide. Undersating, Implementing and Scaling Autono...

DSpace UI Prototype Challenge: Spring Boot + Thymeleaf

  • 1. Licensed under Creative Commons Attribution-ShareAlike 4.0 International License UI Prototype Spring Boot + Thymeleaf Tim Donohue, DuraSpace tdonohue@duraspace.org
  • 2. Technologies used ‱ Spring Boot – Newer, but built on Spring MVC ‱ See Cineca’s prototype for MVC overview – Convention over configuration ‱ Prepackaged Maven / Gradle plugins – Embeddable Tomcat/Jetty (in JAR) – Autoconfiguration of Spring ‱ No requirement for XML configs – Autoconfiguration of many templating engines (Thymeleaf being one)
  • 3. Technologies used ‱ Thymeleaf – Java/HTML5 templating engine – Looks like HTML (mostly) – Natural templating (view static HTML) – Supports HTML “fragments” – FORCES separating content from layout – Spring specific integrations ‱ Bootstrap
  • 4. Technologies used ‱ DSpace 6 (pre-6) Java API – With Enhanced Configuration Scheme (local.cfg / Apache Commons Config) ‱ Provides auto-reloadable configs ‱ Spring Security (AutnN/Z) – Used test “in memory” authN – AuthZ lets you limit access via Path – Very easy to use with Spring Boot
  • 5. Spring Boot ‱ Configured to build a runnable JAR (embedded Tomcat) ‱ Enabled Thymeleaf plugin ‱ Enabled Spring Security plugin ‱ Spring Boot Application configuration – Application class – application.properties
  • 6. Thymeleaf ‱ Looks like HTML, with “th:” attributes – th:fragment => th:include, th:replace – th:text (replace text) – th:if / th:unless – th:each (loop Lists/Iterable/Map/array) – th:with (sets a local variable) – th:href (dynamically build links)
  • 7. Thymeleaf ‱ Looks like HTML, with “th:” attributes – th:fragment => th:include, th:replace – th:text (replace text / adds i18n) – th:if / th:unless – th:each (loop Lists/Iterable/Map/array) – th:with (sets a local variable) – th:href (dynamically build links) ‱ (Very) basic Java calls supported
  • 8. Thymeleaf ‱ Also some special expressions / syntax: – ${variable} => output value of variable – #{i18n.key} => output i18n msg – @{path} => output a link/URL ‱ And Java utility objects: – #lists.isEmpty(java.util.List) – #arrays – #dates (formatting java.util.Date objs)
  • 9. Prototype Theming ‱ Basic at this point – /static/themes directory – Themes consist of a layout.html and CSS, images, JS ‱ Custom code in DSpaceController – Allows one to customize theme loaded based on paths (in local.cfg)
  • 10. Theming with Thymeleaf ‱ layout.html – Contains all our theme “fragments” – (could split these into separate files, e.g. header.html, footer.hml) ‱ Thymeleaf can select fragments – by name – by DOM selects (e.g. #id selects an HTML tag by ‘id’)
  • 11. AuthN/AuthZ ‱ Spring Security – Not yet integrated with DSpace’s Auth ‱ AuthN is using Spring Security’s “test mode” (in memory auth) ‱ AuthN/Z Defined entirely in WebSecurityConfig ‱ Only one restricted path (/admin)
  • 12. Demo
  • 13. Prototype code / docs ‱ https://github.com/tdonohue/DSpac e-Spring-Boot – See README for documentation
  • 14. Limits of Prototype ‱ No actual item editing/creation – Concentrated more on testing Thymeleaf extendability ‱ Spring Security AuthN/Z not integrated with DSpace’s