--- # title: Courses weight: 3 --- # Prerequisites * Solid understanding of Java * Object-oriented programming * Classes, methods and interfaces * Basic understanding of databases * Tables, primary keys, foreign keys, relationships, etc. * Write basic SQL statements --- # What is a Spring Framework? **Spring** -- is a popular framework for building Java applications. It has a lot of modules, each designed to handle a specific task. They are combined into few different layers. ![Spring layers](assets/spring-layers.svg) *Img. 1 -- Spring layers* | **Layer** | **Purpose** | | ------------- | -------------- | | *Core* | Handling dependency injection, managing objects | | *Web* | Building web applications | | *Data* | Working with databases | | *AOP* | Aspect oriented programming | | *Test* | Testing spring components | --- While the spring framework is powerfull, using it often involves a lot of configuration. For example, if you want to build a web app you might need to setup a web server, configure routing and manage dependencies manually. That's when **Spring Boot** comes in. You can think of spring boot as a layer on top of the spring framework, that takes care of all of the setup.