--- tags: computer science, java --- <center> # **Spring Boot Tutorial** :::info Location: Room nnn, 德田館 Time: hhmm ~ hhmm ::: </center> <div style="text-align: right">``If you can properly define the problem,<br> then you’ve already defined the solution as well.''<br> -- Chip Kidd</div> ## **Class Information** ### Instructor - Name: 盧政良 (Zheng-Liang Lu, Arthur) - Email: arthurzllu@gmail.com ### Objectives - Spring Boot 2 and 3 with comparison - Full-stack web applications - Design patterns - Tool usage: - Databases: H2, PostgreSQL, InfluxDB - Git CLI with automation - Maven and Gradle - CI/CD by Jenkin - Liunx: Ubuntu - Virtualization: Docker ### Prerequisites - Java Programming [link](https://www.csie.ntu.edu.tw/~d00922011/java.html) ### Working Environment - Spring Boot 2.7.x - JDK 11 - Spring Boot 3 - JDK 17 ### Recording Classroom Lectures Policy :::warning Recording of classroom lectures is <font color="red">**prohibited**</font> unless advance written permission is obtained from the class instructor and any guest presenter(s). ::: ## **Overview** - Databases & JDBC - Dependency management: Maven/Gradle - Core concepts of Spring Framework: Inversion of Control (IoC) & Aspect-Oriented Programming (AOP) - Catchup of front-end techniques: HTML, CSS, and React.js - Project: shopping cart - Virtualization: Docker - DevOp? <center> ![](https://i.imgur.com/SlQ1SME.png =500x) </center> ## **Schedule** ### ++Introduction to Spring Framework++ - Introduction to Java EE [link](https://cw.fel.cvut.cz/b201/_media/courses/ear/lectures/lecture-01-intro-s.pdf) - https://javaee.github.io/javaee-spec/download/JavaEE8_Platform_Spec_FinalRelease.pdf - Introduction to Spring [link](https://cw.fel.cvut.cz/b201/_media/courses/ear/lectures/lecture-04-spring-s.pdf) - You could follow the course content [here](https://cw.fel.cvut.cz/b201/courses/ear/lectures/start). - Difference between Java EE and Spring Framework [link](https://www.educba.com/java-ee-vs-spring/) - Building an Application with Spring Boot [link](https://spring.io/guides/gs/spring-boot/) - Git: https://git-scm.com/docs/gittutorial - [W3C Schools](https://www.w3schools.com/) for HTML/CSS/JavaScript - ==https://github.com/Bakery-Jay/example/tree/master== - Databases - https://en.wikipedia.org/wiki/List_of_in-memory_databases - MySQL Tutorial [pdf](http://www.di.uniba.it/~cdamato/corsi/BasiDiDati-Materiale/Intro%20a%20MySQL.pdf) - [How to Use MySQL](https://hackmd.io/mJlsrhYCR_WfQ5FZ-tD8EQ) - (FYR) [MySQL by Examples for Beginners](https://www3.ntu.edu.sg/home/ehchua/programming/sql/MySQL_Beginner.html) - Linux server - [Ubuntu 20.04](https://ubuntu.com/#download) - [VirtualBox](https://www.virtualbox.org/) - [Short Note for Linux Commands](https://hackmd.io/@arthurzllu/HkvOPPCOD) - [How to Use vim and tmux?](https://hackmd.io/@arthurzllu/Syaafb-aw) - Virtualization - [How to Use Docker](/MquTvBXqR4eG4998xZ1Fuw) - http://www.cs.rpi.edu/academics/courses/spring21/csci4960/lecture_notes.html ## **References** ### ++Dependency Management++ - http://maven.apache.org/ ![](https://i.imgur.com/qLTHlJb.png =100x) - https://gradle.org/ ![](https://i.imgur.com/jgFmkPT.png) ### ++Database++ - MySQL https://www.mysql.com/ ![](https://i.imgur.com/unxXFyR.png =100x) - PostgreSQL https://www.postgresql.org/ ![](https://i.imgur.com/IeottwR.png =80x) - InfluxDB https://www.influxdata.com/ ![](https://i.imgur.com/OWJVUsL.png) - DBeaver https://dbeaver.io/ ![](https://i.imgur.com/08k4aXl.png =100x) - Abraham Silberschatz, Henry Korth, and S. Sudarshan, [Database System Concepts](https://www.amazon.com/Database-System-Concepts-Computer-Science/dp/0073523321), 6/e, 2010 ![](https://i.imgur.com/ybQi2Li.png =100x) - Donnie Pinkston, [Introduction to Relational Database Systems](http://users.cms.caltech.edu/~donnie/cs121/), Caltech Computer Science, 2018fa - Markus Krötzsch, [Database Theory, International Center for Computational Logic](https://iccl.inf.tu-dresden.de/web/Foundations_of_Databases_and_Query_Languages_(SS2015)/en), TU Dresden, 2015 - Andy Pavlo, [15-445/645 DATABASE SYSTEMS](https://15445.courses.cs.cmu.edu/fall2020/), Carnegie Mellon University, 2020fa ### ++Spring Framework++ - Rod Johnson, [Expert One-on-One J2EE Design and Development](https://www.amazon.com/Expert-One-One-Design-Development/dp/0764543857), 2002 ==father of Spring== ![](https://i.imgur.com/Mmmn2aR.png =100x) - https://spring.io/projects/spring-framework ![](https://i.imgur.com/F0D0iwC.png) - Iuliana Cosmina, Rob Harrop, Chris Schaefer, Clarence Ho, [Pro Spring 5](https://www.apress.com/gp/book/9781484228074), 5/e, 2017 ![](https://i.imgur.com/RI0NAyl.png =100x) ### ++Spring Boot++ - Craig Walls, [Spring Boot in Action](https://www.manning.com/books/spring-boot-in-action), 2015 <font size = -1>[code](https://www.manning.com/downloads/1308)</font> ![](https://i.imgur.com/mAYKhsd.png =100x) - Mohamed Shazin Sadakath, [Spring Boot 2.0 Projects](https://www.packtpub.com/product/spring-boot-2-0-projects/9781789136159), 2018 <font size = -1>[github](https://github.com/PacktPublishing/Spring-Boot-2.0-Projects) ![](https://i.imgur.com/BRPOBpm.png =100x)</font> - Felipe Gutierrez, [Pro Spring Boot 2](https://www.apress.com/gp/book/9781484236758), 2019 <font size = -1>[code](https://github.com/Apress/pro-spring-boot-2)</font> ![](https://i.imgur.com/hCKeGki.png =100x) - M.K Yong, [Spring Boot Tutorials](https://mkyong.com/tutorials/spring-boot-tutorials/), 2019 ### ++Case Study++ * Open source e-commerce in Java https://www.shopizer.com/ ![](https://i.imgur.com/AwH7SBZ.png =200x) * A complete online judge from China https://sduoj.online/ ### ++Misc++ - Vijay Nair, [Practical Domain-Driven Design in Enterprise Java](https://www.apress.com/gp/book/9781484245422), 2019 ![](https://i.imgur.com/2mWYXbK.png =100x)