---
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)