TIL: Spring Boot, pt1
Started working through a spring boot tutorial today. I’ve got some books in the mail for other related Java stuff but I was itching to get started with something. I’ll be following along with the tutorial that’s located here over the next few days.
Here are the notes from today’s lessons that I completed:
- Spring Boot is a tool that helps us create Spring based Applications
- It creates something that’s production ready that can just be run
- Evidently that’s really hard with just normal Spring based applications…
What is Spring?
- An entire Application FrameWork
- It’s huge, and has lots of pieces
- Spring handles a lot under the covers to you, allowing you to focus on the business logic – Lots of things are just tied together via annotations – Things like connecting into the db and other such tasks
- Requires a lot of setup and configuration steps
- Many build and deploy steps to get it up and running
- Spring Boot can be used to abstract all of the overwhelming parts to Spring allowing you to focus on the business logic alone.
Why Use Spring Boot?
- Focuses on convention over configuration (shoot for the 80% use case)
- Output is ready to run in a self contained executable container. There isn’t anything else that needs to be done
- Gives you production ready code.
Maven and pom files
- Don’t have to download jars, just list out the dependencies
- pom.xml contains list of the dependencies
- Maven will go out to the repo and grab each of those dependencies for your
- Has a tool that will help generate what this file looks like
Creating a new Maven Project
- Group Id: Package name, identifies the name space
- Artifact Id: Project Id
- Need to add the following to the generated pom.xml file to include Spring Boot dependencies
- All of this states that our project is a child of the Spring Boot project
- Our project will inherit from the parent (Spring Boot Starter)
- This one starter will contain all of the opinionated maven configurations for spring
- Also need a set of jars to help with all of web based items
- This is a wrapper that contains all of our related jars that we need.
- We can also define the version of Java that we are using for the project