This course is geared towards giving you a well-rounded skill set in Spring and Spring Boot.

The Goal

The overall goal of this course is to build a URL shortening service such as https://bitly.com/ . In fact, you will build three versions of it, a plain Java version, a plain Spring version, as well as a Spring Boot version. All under the supervision of an instructor. You’ll even deploy it to a free Heroku server at the end of this course, so that you can access it online and proudly share your work with your friends across the planet.

If you are unsure of what exactly a URL shortening service does and to get a feel of what you are going to build, it is highly recommended to watch the following video:

Text & Video Lessons

As you might have noticed by now, this course comes with text lessons, interspersed with video lessons. Some people have strong opinions on whatever learning channel (reading, watching videos, listening) works best, here is what we think:

Some theory is better given in short, succint text form, allowing for a quick re-read from time to time. But when it comes to the actual coding part it is best to mimic an expert. Video is one way of doing that.

This means you are not just blindly following some copy-and-paste tutorial, but you also get these little conversational information nuggets along the way, that a mentor or colleague would give you in real-life. Not mindless blathering, but straight to the point.

Also, don’t worry, if the pace of the videos is too slow or too fast, you can always adapt it to your needs.

Practice & Checkpoints

You will take the knowledge that you learned throughout the text and video lessons and apply them directly to your URL shortener project.

The video lessons will show you how a concept in general works, say, delivering a static, generic HTML page with an embedded Tomcat.

It is then your responsibility to build a homepage for your URL shortener project. Which is of course very similar, but not the same as the video you watched.

To make sure you stay on the right path, there’s also a checkpoint for every section. Try the material of this day to see how this works.

Teacher Feedback

On your very first day, you will be added to a private Slack channel and assigned an instructor. Your instructor will be reviewing your project & code. During the office hours, your instructor will assist you with any questions you have. After the office hours, you can still paste your question into the channel and receive feedback within a day.

If a lesson is unclear, you get stuck in the project or you lose hope, always ask in your private Slack channel. Do not hesitate, because you think certain questions are stupid or out of wrong pride. We want you to move smoothly throughout this project.

In addition, you will be added to a public Slack channel with all fellow students who are going through the course and are likely hitting the very same problems you are. Use them. Ponder about code related questions together. Come up with ideas and solutions, together.

Course in Summary

  • We’ll teach you theory and practice for a given problem or task through text and video lessons.

  • You’ll transfer that knowledge onto your own project, practicing it and completing checkpoints along the way

  • You’ll have a daily feedback loop with your instructor to clarify topics or get answers whenever you get stuck

Part 1: Plain Java

This part might come as a surprise to some. Yes, this part is about building your URL shortener project with plain Java tools, which means without any Spring. It is interestingly also the most important part in a Spring course and part of what makes this course different to many other available courses. Why is that?

To oversimplify things a bit, Spring is simply a convenience library, that makes certain aspects of Java programming easier (some maybe worse). So, it is not a replacement for plain Java, in fact it is merely a convenience layer on top of Java.

What that means is that everything you build throughout this part is 100% valid for the Spring part. It is not only valid, but you will understand the pain points of pure Java APIs and only then will you be able to appreciate what Spring actually is, where it helps and why you should or should not use it.

The following libraries/frameworks are covered in this part:

  • Embedded Web Servers (Tomcat)

  • Dynamic HTML templating (Velocity)

  • Database Access in Java (JDBC)

  • Build Process & Deployments (Maven)

  • URL Shortening Domain Logic (pure Java)

Part 2: Plain Spring

Now that you understand how to build a URL shortener with plain Java tools, it is time to have a closer look at the Spring framework (not yet Spring Boot!). This means to actually learn about how and why the Spring framework came about in the first place: As a tool for dependency injection.

Here, the following topics will be covered:

  • Dependency Injection Basics: Creating ApplicationContexts, Beans, Scopes

  • Spring Web MVC: How to write web sites with Spring

  • Databases/Transactions & Proxies with Spring

  • Resources, Environment Handlings, Bindings, Validations

  • Testing with Spring

You will learn about all these concepts during the second week of the course and then get the chance to migrate your existing URL shortener application, step-by-step to use Spring where applicable and where feasible.

Even better, as you will be building your Spring version in a separate Git branch, you’ll be able to compare both solution (Part 1 & 2) at the end of this part. So not only will you have created and finished a complete Spring application from scratch, you will also know exactly what the advantages and disadvantages of using Spring are.

Part 3: Spring Boot

Part 1 and 2 gave you a solid theoretical and practical understanding of how to build your URL shortener project with plain Java and then plain Spring. Contrary to popular routine, now is the best time to actually get started with Spring Boot, as all the different puzzle pieces will fall into place perfectly.

Migrating your URL shortener to Spring boot entails two steps.

First learning what Spring Boot really is. How does it work, what are AutoConfigurations and what is that Spring Boot magic really all about? Is there a difference between Spring and Spring Boot or are they the same? Etc.

Second, doing the actual migration of your project. Only this time, it is not so much a migration, instead you will create a completely empty Spring Boot project from scratch, modify it where it makes sense, as well as copy-and-paste some of the Spring code you wrote before. This way you will learn exactly what the advantages (and disadvantages!) of Spring Boot are compared to plain Spring.

As is the case with the previous part, your solution will live in a separate Git branch and you will be able to compare it to either the plain Java or plain Spring solution afterwards.

Finally, this is also the part where you will be able to deploy your application to the Internet and share it with your friends. Even better, you can choose which version to deploy. Plain Java, Spring, or Spring Boot: They all should work and offer the same features to users.

Checkpoint

To continue, you should have:

  • Watched the bit.ly project video

  • Know this course consists of text/video + pratice + feedback.

Enough talk, let’s start with getting your machine ready to start Java & Spring programming.