 Okay, up on the screen, you can see that I have Chrome up and I am actually at my blog. So this is an article I wrote about a year ago on using Spring Boot layer. So this is a really cool feature available with Spring Boot. If you see the article here, I talk about how Docker itself works. So remember, as we build that image, we are going to be building layers in that image. So the JRE base image that we're using, that's going to have a collection of immutable file system layers. And I kind of think of these as effectively as a tar ball with a hash. So every time you add something, it's a new tar ball with a hash as it's getting generated. So the Spring Boot layer is actually a fairly clever idea because if you, let's say you have a Docker host that has a bunch of microservices on it. And when you start getting into larger Spring or any Java application, when you start bringing in things like a hibernate and some of the more advanced type stuff, you get a large bundle of dependencies. So you can easily have a 200 meg image, but it's all jar files. And what happens is this big, fat jar that you're stuffing into your Docker image, there's no way your application is only going to be a small teeny part of that. And there's no way for the Docker build system to distinguish from that. So what this does is we build effectively multiple layers in that Spring application. So chances are, as you're doing some type of continuous deployment, your application is going to be changing. The Spring dependencies are going to be fairly stable. I mean, it depends on how often you are releasing or updating Spring. I know some organizations that they'll get out on Spring version and because it is so large across their applications, they might only upgrade once a year. So their Spring dependencies are going to be fairly stable for a year. So every deployment that they do, if they broke out to the layers, they wouldn't be redeploying those. So on the Docker host, once a layer is there, it's not going to get downloaded again. So if we break out all the Spring dependencies into its own layer, that layer will get reused over and over and over when we do a new deployment with the application, the application changes. And that is going to be just a small fraction of what's actually changing there. We put that into its own separate layer. Then that application is only changing. So if you are running a larger system in production and doing a continuous deployment, you can see how this is going to have significant savings coming up. So in this video or in this section of the course, I'm going to show you how to enable it, give you a little preview. We are going to be adding in a Maven configuration. And then we are going to be adding in the dependency. So here you can see that we are setting up layers in the way Spring did it. We have dependencies, Spring boot, loader, snapshot dependencies. So if you have any snapshot versions on dependent projects, those will get put in and then your application. So chances are these two here, the top two folders, those layers will get converted into layers. Those will be pretty static as far as your deployments. And then the second to the smaller dependencies, if you have any snapshot, personally, I don't think you should be deploying snapshot versions to that anything, but that is just my opinion. And then you also have the application. That's where your Spring boot application, the much smaller component is going to be living. So we will be stepping through that. Uh, I'll show you how to set up the Spring boot layer tools, as well as, uh, we will be doing a multi-stage Docker build. In this video, I want to toggle over to IntelliJ. And what we'll do is we will add in this little piece of configuration right here to our Spring boot Maven plugin. And you do have to be on Spring boot 2.3 or higher. This just came out about a year ago. So if you are on a previous version, that Spring boot Maven plugin will not support this. I think you probably can add in that, that little bit of configuration and it'll probably just ignore it. So, but then you might be mystified why it doesn't work. So I'm going to jump over to IntelliJ and we'll go ahead and add that in. So I'm in IntelliJ. I'm going to go into the Maven Palm and I am on a branch called layered Maven. And here you can see I have the Spring boot Maven plugin, the Excludes. I want to come up here and just grab configuration and then layers. I copied that from my blog. So we are adding in configuration layer enable true that is going to, by default, enable it, default is not enabled. And then we are going to be including the layered tools. And that is going to come up into the build file. We will address the multi-stage build file in the next video.