[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"global-header-tutorials-static":3,"article-springdoc-openapi-swagger-ui-in-spring":4,"initial-similar-fetch":22},[],{"alias":5,"title":6,"description":7,"content":8,"thumbnail":9,"keywords":10,"categories":17,"tags":20,"createdAt":21},"springdoc-openapi-swagger-ui-in-spring","Implementing springdoc-openapi swagger ui in Spring Boot application","Adding springdoc-openapi swagger ui in a Spring Boot application","{\"type\":\"doc\",\"content\":[{\"type\":\"paragraph\",\"attrs\":{\"textAlign\":null},\"content\":[{\"type\":\"text\",\"text\":\"Using springdoc-openapi Swagger in Spring Boot is clearer and easier to use due to its auto-configuration mechanism. In this tutorial, we are going to learn how to set up the swagger ui in the application and customize the default configuration.\"}]},{\"type\":\"heading\",\"attrs\":{\"textAlign\":null,\"level\":2},\"content\":[{\"type\":\"text\",\"text\":\"Introduction\"}]},{\"type\":\"heading\",\"attrs\":{\"textAlign\":null,\"level\":3},\"content\":[{\"type\":\"text\",\"text\":\"Introduction to Swagger\"}]},{\"type\":\"paragraph\",\"attrs\":{\"textAlign\":null},\"content\":[{\"type\":\"text\",\"text\":\"Swagger is an open-source framework that is used to document, design, build, and utilize RESTful web services. It uses the open api specification(OAS) that describes the REST API in a machine-readable format. In brief, it will help to test the application endpoints.\"}]},{\"type\":\"paragraph\",\"attrs\":{\"textAlign\":null},\"content\":[{\"type\":\"text\",\"text\":\"When we open the swagger ui url in the browser, we will see the documentation page that lists all the endpoints, request parameters, and request and response formats, which allows to test them directly from the interface.\"}]},{\"type\":\"heading\",\"attrs\":{\"textAlign\":null,\"level\":3},\"content\":[{\"type\":\"text\",\"text\":\"Springdoc OpenAPI Dependency\"}]},{\"type\":\"paragraph\",\"attrs\":{\"textAlign\":null},\"content\":[{\"type\":\"text\",\"text\":\"The \"},{\"type\":\"text\",\"marks\":[{\"type\":\"code\"}],\"text\":\"springdoc-openapi-starter-webmvc-ui\"},{\"type\":\"text\",\"text\":\" is the modern library that automates the generation of api documentations in a Spring project. \"}]},{\"type\":\"paragraph\",\"attrs\":{\"textAlign\":null},\"content\":[{\"type\":\"text\",\"text\":\"When we add the dependency to the build file, it will automatically scan the application at startup, find all the REST controllers, and generate api documentation based on the REST annotations and method signatures.\"}]},{\"type\":\"heading\",\"attrs\":{\"textAlign\":null,\"level\":2},\"content\":[{\"type\":\"text\",\"text\":\"Adding Dependency\"}]},{\"type\":\"paragraph\",\"attrs\":{\"textAlign\":null},\"content\":[{\"type\":\"text\",\"text\":\"First, let's add the \"},{\"type\":\"text\",\"marks\":[{\"type\":\"code\"}],\"text\":\"springdoc-openapi-starter-webmvc-ui\"},{\"type\":\"text\",\"text\":\" to our project.\"}]},{\"type\":\"heading\",\"attrs\":{\"textAlign\":null,\"level\":3},\"content\":[{\"type\":\"text\",\"text\":\"For Maven\"}]},{\"type\":\"paragraph\",\"attrs\":{\"textAlign\":null},\"content\":[{\"type\":\"text\",\"text\":\"Inside \"},{\"type\":\"text\",\"marks\":[{\"type\":\"code\"}],\"text\":\"pom.xm\"},{\"type\":\"text\",\"text\":\"l file\"}]},{\"type\":\"codeBlock\",\"attrs\":{\"language\":\"java\"},\"content\":[{\"type\":\"text\",\"text\":\"\u003Cdependency>\\n    \u003CgroupId>org.springdoc\u003C\u002FgroupId>\\n    \u003CartifactId>springdoc-openapi-starter-webmvc-ui\u003C\u002FartifactId>\\n    \u003Cversion>2.8.17\u003C\u002Fversion> \\n\u003C\u002Fdependency>\"}]},{\"type\":\"heading\",\"attrs\":{\"textAlign\":null,\"level\":3},\"content\":[{\"type\":\"text\",\"text\":\"For Gradle\"}]},{\"type\":\"paragraph\",\"attrs\":{\"textAlign\":null},\"content\":[{\"type\":\"text\",\"text\":\"Inside \"},{\"type\":\"text\",\"marks\":[{\"type\":\"code\"}],\"text\":\"build.gradle\"},{\"type\":\"text\",\"text\":\"  file\"}]},{\"type\":\"codeBlock\",\"attrs\":{\"language\":\"java\"},\"content\":[{\"type\":\"text\",\"text\":\"implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.8.17'\"}]},{\"type\":\"paragraph\",\"attrs\":{\"textAlign\":null},\"content\":[{\"type\":\"text\",\"text\":\"Refer to the latest version from the \"},{\"type\":\"text\",\"marks\":[{\"type\":\"link\",\"attrs\":{\"href\":\"https:\u002F\u002Fgithub.com\u002Fspringdoc\u002Fspringdoc-openapi\u002Freleases\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer nofollow\",\"class\":null,\"title\":null}}],\"text\":\"release\"},{\"type\":\"text\",\"text\":\".\"}]},{\"type\":\"paragraph\",\"attrs\":{\"textAlign\":null},\"content\":[{\"type\":\"text\",\"text\":\"Click Sync and Reload for the dependency to download.\"}]},{\"type\":\"heading\",\"attrs\":{\"textAlign\":null,\"level\":2},\"content\":[{\"type\":\"text\",\"text\":\"Accessing the Swagger UI\"}]},{\"type\":\"paragraph\",\"attrs\":{\"textAlign\":null},\"content\":[{\"type\":\"text\",\"text\":\"While running the spring-boot application with the dependency setup, you might see the Spring app output as below.\"}]},{\"type\":\"codeBlock\",\"attrs\":{\"language\":\"bash\"},\"content\":[{\"type\":\"text\",\"text\":\"SpringDoc \u002Fv3\u002Fapi-docs endpoint is enabled by default. To disable it in production, set the property 'springdoc.api-docs.enabled=false'\\nSpringDoc \u002Fswagger-ui.html endpoint is enabled by default. To disable it in production, set the property 'springdoc.swagger-ui.enabled=false'\"}]},{\"type\":\"paragraph\",\"attrs\":{\"textAlign\":null},\"content\":[{\"type\":\"text\",\"text\":\"This shows that it will configure all the default endpoints and necessary configurations by default with the Spring Boot auto-configuration mechanism.\"}]},{\"type\":\"paragraph\",\"attrs\":{\"textAlign\":null},\"content\":[{\"type\":\"text\",\"text\":\"Let's open the endpoints.\"}]},{\"type\":\"paragraph\",\"attrs\":{\"textAlign\":null},\"content\":[{\"type\":\"text\",\"text\":\"For \"},{\"type\":\"text\",\"marks\":[{\"type\":\"code\"}],\"text\":\"http:\u002F\u002Flocalhost:8080\u002Fv3\u002Fapi-docs\"},{\"type\":\"text\",\"text\":\"  you can see the JSON output.\"}]},{\"type\":\"codeBlock\",\"attrs\":{\"language\":\"bash\"},\"content\":[{\"type\":\"text\",\"text\":\"{\\nopenapi: \\\"3.1.0\\\",\\ninfo: {\\ntitle: \\\"OpenAPI definition\\\",\\nversion: \\\"v0\\\"\\n},\\nservers: [\\n{\\nurl: \\\"http:\u002F\u002Flocalhost:8080\\\",\\ndescription: \\\"Generated server url\\\"\\n}\\n],\\npaths: {\\n\u002Fproduct\u002F{productId}: {\\nget: {\\ntags: [\"}]},{\"type\":\"paragraph\",\"attrs\":{\"textAlign\":null},\"content\":[{\"type\":\"text\",\"text\":\"For \"},{\"type\":\"text\",\"marks\":[{\"type\":\"code\"}],\"text\":\"http:\u002F\u002Flocalhost:8080\u002Fswagger-ui\u002Findex.html\"},{\"type\":\"text\",\"text\":\" you can see the interactive ui for testing the endpoints.\"}]},{\"type\":\"image\",\"attrs\":{\"src\":\"https:\u002F\u002Fapi.csbyte.com\u002Fuploads\u002Feditor\u002F57504e2b-f7cd-485f-8d3b-8d4ad7b2c68c_swagger-ui.png\",\"alt\":null,\"title\":null,\"width\":null,\"height\":null}},{\"type\":\"paragraph\",\"attrs\":{\"textAlign\":null},\"content\":[{\"type\":\"text\",\"text\":\"This is the default configuration setup ui interactive page.\"}]},{\"type\":\"heading\",\"attrs\":{\"textAlign\":null,\"level\":2},\"content\":[{\"type\":\"text\",\"text\":\"Adding OpenAPI Configuration\"}]},{\"type\":\"paragraph\",\"attrs\":{\"textAlign\":null},\"content\":[{\"type\":\"text\",\"text\":\"Now, let's customize the default configuration using a configuration file.\"}]},{\"type\":\"paragraph\",\"attrs\":{\"textAlign\":null},\"content\":[{\"type\":\"text\",\"text\":\"Create \"},{\"type\":\"text\",\"marks\":[{\"type\":\"code\"}],\"text\":\"OpenApiConfig.java\"},{\"type\":\"text\",\"text\":\" \"}]},{\"type\":\"codeBlock\",\"attrs\":{\"language\":\"java\"},\"content\":[{\"type\":\"text\",\"text\":\"package com.csbyte.product.config;\\n\\nimport io.swagger.v3.oas.models.ExternalDocumentation;\\nimport io.swagger.v3.oas.models.OpenAPI;\\nimport io.swagger.v3.oas.models.info.Contact;\\nimport io.swagger.v3.oas.models.info.Info;\\nimport io.swagger.v3.oas.models.info.License;\\nimport org.springframework.beans.factory.annotation.Value;\\nimport org.springframework.context.annotation.Bean;\\nimport org.springframework.context.annotation.Configuration;\\n\\n@Configuration\\npublic class OpenApiConfig {\\n\\n    @Value(\\\"${api.common.licenseUrl:https:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0}\\\")\\n    String apiLicenseUrl;\\n\\n    @Value(\\\"${api.common.contact.name:CsByte Support}\\\")\\n    String apiContactName;\\n\\n    @Value(\\\"${api.common.description:CsByte API documentation for Product service.}\\\")\\n    String apiDescription;\\n\\n    @Value(\\\"${api.common.contact.url:https:\u002F\u002Fcsbyte.com\u002Fsupport}\\\")\\n    String apiContactUrl;\\n\\n    @Value(\\\"${api.common.externalDocDesc:Detailed System Architecture Documentation}\\\")\\n    String apiExternalDocDesc;\\n\\n    @Value(\\\"${api.common.termsOfService:https:\u002F\u002Fcsbyte.com\u002Fterms}\\\")\\n    String apiTermsOfService;\\n\\n    @Value(\\\"${api.common.version:1.0.0}\\\")\\n    String apiVersion;\\n\\n    @Value(\\\"${api.common.externalDocUrl:https:\u002F\u002Fcsbyte.com\u002Fdocs}\\\")\\n    String apiExternalDocUrl;\\n\\n    @Value(\\\"${api.common.title:CsByte Product API}\\\")\\n    String apiTitle;\\n\\n    @Value(\\\"${api.common.contact.email:support@csbyte.com}\\\")\\n    String apiContactEmail;\\n\\n    @Value(\\\"${api.common.license:Apache 2.0}\\\")\\n    String apiLicense;\\n\\n    @Bean\\n    public OpenAPI getOpenApiDocumentation() {\\n        return new OpenAPI()\\n                .info(new Info().title(apiTitle)\\n                        .version(apiVersion)\\n                        .description(apiDescription)\\n                        .contact(new Contact()\\n                                .name(apiContactName)\\n                                .url(apiContactUrl)\\n                                .email(apiContactEmail))\\n                        .termsOfService(apiTermsOfService)\\n                        .license(new License()\\n                                .name(apiLicense)\\n                                .url(apiLicenseUrl)))\\n                .externalDocs(new ExternalDocumentation()\\n                        .description(apiExternalDocDesc)\\n                        .url(apiExternalDocUrl));\\n    }\\n}\"}]},{\"type\":\"paragraph\",\"attrs\":{\"textAlign\":null},\"content\":[{\"type\":\"text\",\"text\":\"This is the sample configuration file for customizing the default properties, which provide general descriptive information about the API. You can set these config properties inside the \"},{\"type\":\"text\",\"marks\":[{\"type\":\"code\"}],\"text\":\"application.yml \"},{\"type\":\"text\",\"text\":\"or \"},{\"type\":\"text\",\"marks\":[{\"type\":\"code\"}],\"text\":\"application.properties\"},{\"type\":\"text\",\"text\":\" file.\"}]},{\"type\":\"heading\",\"attrs\":{\"textAlign\":null,\"level\":3},\"content\":[{\"type\":\"text\",\"text\":\"Configure spring-doc Open Api\"}]},{\"type\":\"paragraph\",\"attrs\":{\"textAlign\":null},\"content\":[{\"type\":\"text\",\"text\":\"We can configure the springdoc configuration inside \"},{\"type\":\"text\",\"marks\":[{\"type\":\"code\"}],\"text\":\"application.yml\"},{\"type\":\"text\",\"text\":\" file as\"}]},{\"type\":\"codeBlock\",\"attrs\":{\"language\":\"bash\"},\"content\":[{\"type\":\"text\",\"text\":\"springdoc:\\n  swagger-ui.path: \u002Fopenapi\u002Fswagger-ui.html\\n  api-docs.path: \u002Fopenapi\u002Fapi-docs\\n  packagesToScan: com.csbyte.product\\n  pathsToMatch: \u002F**\"}]},{\"type\":\"paragraph\",\"attrs\":{\"textAlign\":null},\"content\":[{\"type\":\"text\",\"text\":\"Now, this will change the api docs URLs to \"},{\"type\":\"text\",\"marks\":[{\"type\":\"code\"}],\"text\":\"http:\u002F\u002Flocalhost:8080\u002Fopenapi\u002Fswagger-ui\u002Findex.html\"},{\"type\":\"text\",\"text\":\"  and \"},{\"type\":\"text\",\"marks\":[{\"type\":\"code\"}],\"text\":\"http:\u002F\u002Flocalhost:8080\u002Fopenapi\u002Fapi-docs\"},{\"type\":\"text\",\"text\":\" . We can set the package for api documentation and paths to match.\"}]},{\"type\":\"heading\",\"attrs\":{\"textAlign\":null,\"level\":2},\"content\":[{\"type\":\"text\",\"text\":\"Adding API Documentation\"}]},{\"type\":\"paragraph\",\"attrs\":{\"textAlign\":null},\"content\":[{\"type\":\"text\",\"text\":\"Let's look into the sample endpoint for the product service.\"}]},{\"type\":\"codeBlock\",\"attrs\":{\"language\":\"java\"},\"content\":[{\"type\":\"text\",\"text\":\"import io.swagger.v3.oas.annotations.Operation;\\nimport io.swagger.v3.oas.annotations.responses.ApiResponse;\\nimport io.swagger.v3.oas.annotations.responses.ApiResponses;\\nimport io.swagger.v3.oas.annotations.tags.Tag;\\nimport org.springframework.web.bind.annotation.PathVariable;\\nimport org.springframework.web.bind.annotation.RequestMapping;\\n\\n@Tag(name = \\\"Product\\\", description = \\\"REST API for product.\\\")\\npublic interface ProductService {\\n\\n    @Operation(\\n            summary = \\\"Get product from product id\\\",\\n            description = \\\"Product description\\\")\\n    @ApiResponses(value = {\\n            @ApiResponse(responseCode = \\\"200\\\", description = \\\"OK\\\"),\\n            @ApiResponse(responseCode = \\\"404\\\", description = \\\"Not found\\\"),\\n    })\\n    @RequestMapping(\\n            value = \\\"\u002Fproduct\u002F{productId}\\\",\\n            produces = \\\"application\u002Fjson\\\"\\n    )\\n    Product getProduct(@PathVariable int productId);\\n}\"}]},{\"type\":\"bulletList\",\"content\":[{\"type\":\"listItem\",\"content\":[{\"type\":\"paragraph\",\"attrs\":{\"textAlign\":null},\"content\":[{\"type\":\"text\",\"marks\":[{\"type\":\"code\"}],\"text\":\"@Tag\"},{\"type\":\"text\",\"text\":\"  is used to describe entire class endpoints \"}]}]},{\"type\":\"listItem\",\"content\":[{\"type\":\"paragraph\",\"attrs\":{\"textAlign\":null},\"content\":[{\"type\":\"text\",\"marks\":[{\"type\":\"code\"}],\"text\":\"@Operation\"},{\"type\":\"text\",\"text\":\" is used for the specific endpoint that uses it\"}]}]},{\"type\":\"listItem\",\"content\":[{\"type\":\"paragraph\",\"attrs\":{\"textAlign\":null},\"content\":[{\"type\":\"text\",\"marks\":[{\"type\":\"code\"}],\"text\":\"@ApiResponses\"},{\"type\":\"text\",\"text\":\"  is used to define the possible HTTP responses that the endpoint will return. In our case 200 and 404 responses\"}]}]}]},{\"type\":\"blockquote\",\"content\":[{\"type\":\"paragraph\",\"attrs\":{\"textAlign\":null},\"content\":[{\"type\":\"text\",\"text\":\"Note: we can use the property placeholder for each text and provide the values via the \"},{\"type\":\"text\",\"marks\":[{\"type\":\"code\"}],\"text\":\"application.yml\"},{\"type\":\"text\",\"text\":\" file.\"}]}]},{\"type\":\"image\",\"attrs\":{\"src\":\"https:\u002F\u002Fapi.csbyte.com\u002Fuploads\u002Feditor\u002F3501ace5-c9b0-4819-8d35-d8714390c075_swagger_product_highlighted.png\",\"alt\":null,\"title\":null,\"width\":null,\"height\":null}},{\"type\":\"paragraph\",\"attrs\":{\"textAlign\":null},\"content\":[{\"type\":\"text\",\"text\":\"All the changes are highlighted in the given image.\"}]},{\"type\":\"paragraph\",\"attrs\":{\"textAlign\":null},\"content\":[{\"type\":\"text\",\"text\":\"Now, you can add the same for different endpoints and test. \"}]},{\"type\":\"paragraph\",\"attrs\":{\"textAlign\":null},\"content\":[{\"type\":\"text\",\"text\":\"Make sure to disable the setup in production by adding the following property in \"},{\"type\":\"text\",\"marks\":[{\"type\":\"code\"}],\"text\":\"application.properties\"},{\"type\":\"text\",\"text\":\" or \"},{\"type\":\"text\",\"marks\":[{\"type\":\"code\"}],\"text\":\"application.yml\"},{\"type\":\"text\",\"text\":\" file.\"}]},{\"type\":\"codeBlock\",\"attrs\":{\"language\":\"bash\"},\"content\":[{\"type\":\"text\",\"text\":\"springdoc.swagger-ui.enabled=false\"}]},{\"type\":\"heading\",\"attrs\":{\"textAlign\":null,\"level\":2},\"content\":[{\"type\":\"text\",\"text\":\"Setup for Spring WebFlux\"}]},{\"type\":\"paragraph\",\"attrs\":{\"textAlign\":null},\"content\":[{\"type\":\"text\",\"text\":\"We can use the \"},{\"type\":\"text\",\"marks\":[{\"type\":\"code\"}],\"text\":\"springdoc-openapi\"},{\"type\":\"text\",\"text\":\" for the reactive application. Add the following configuration for WebFlux.\"}]},{\"type\":\"heading\",\"attrs\":{\"textAlign\":null,\"level\":3},\"content\":[{\"type\":\"text\",\"text\":\"For Maven\"}]},{\"type\":\"codeBlock\",\"attrs\":{\"language\":\"java\"},\"content\":[{\"type\":\"text\",\"text\":\"  \u003Cdependency>\\n      \u003CgroupId>org.springdoc\u003C\u002FgroupId>\\n      \u003CartifactId>springdoc-openapi-starter-webflux-api\u003C\u002FartifactId>\\n      \u003Cversion>2.8.17\u003C\u002Fversion>\\n   \u003C\u002Fdependency>\"}]},{\"type\":\"heading\",\"attrs\":{\"textAlign\":null,\"level\":3},\"content\":[{\"type\":\"text\",\"text\":\"For Gradle\"}]},{\"type\":\"codeBlock\",\"attrs\":{\"language\":\"java\"},\"content\":[{\"type\":\"text\",\"text\":\"implementation 'org.springdoc:springdoc-openapi-starter-webflux-api:2.8.17'\"}]},{\"type\":\"paragraph\",\"attrs\":{\"textAlign\":null},\"content\":[{\"type\":\"text\",\"text\":\"We finally configure the spring open api docs setup for our application by utilizing the defualt swagger config, and later we customize it. Implement it in our application with custom endpoint descriptions and also add the dependencies for a Spring WebFlux application.\"}]},{\"type\":\"paragraph\",\"attrs\":{\"textAlign\":null},\"content\":[{\"type\":\"text\",\"text\":\"If you want to learn more about OpenApi Swagger implementation in detail, follow the \"},{\"type\":\"text\",\"marks\":[{\"type\":\"link\",\"attrs\":{\"href\":\"https:\u002F\u002Fspringdoc.org\u002F\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer nofollow\",\"class\":null,\"title\":null}}],\"text\":\"guide\"},{\"type\":\"text\",\"text\":\".\"}]}]}","https:\u002F\u002Fapi.csbyte.com\u002Fuploads\u002Feditor\u002F3501ace5-c9b0-4819-8d35-d8714390c075_swagger_product_highlighted.png",[11,12,13,14,15,16],"spring-boot","gradle","spring-framework-7","spring-boot-4","java","spring",[18,19],"Spring Framework","Spring Boot",[16,11],"2026-06-30T10:39:32.703Z",[23,30,36,42,48,54,60,66,72,77,83,89,95],{"alias":24,"title":25,"description":26,"thumbnail":27,"createdAt":28,"tutorialAlias":29,"lessonAlias":29},"spring-boot-multi-stage-build-with-docker","Creating spring boot multi-stage build with docker","How to create a Spring Boot multi-stage build with Docker","\u002Fuploads\u002Fthumbnails\u002F8931e2f7-a669-4fbb-855b-5ebe396f462e_multi-stage-build-docke.jpeg","2026-06-20T06:34:41.356Z",null,{"alias":31,"title":32,"description":33,"thumbnail":34,"createdAt":35,"tutorialAlias":29,"lessonAlias":29},"configure-profile-in-spring-boot","Configure different spring profiles in spring boot application","Managing Spring Boot profiles for different environments along with Docker","\u002Fuploads\u002Fthumbnails\u002F59a52e59-4b56-469d-8902-41af5e0f13dd_Spring-profil.jpeg","2026-06-20T04:51:27.098Z",{"alias":37,"title":38,"description":39,"thumbnail":40,"createdAt":41,"tutorialAlias":29,"lessonAlias":29},"global-exception-handling-in-spring-boot","Implementing Robust Global Exception Handling in Spring Boot","How to Handle Errors in Spring Boot: An Architectural Guide","https:\u002F\u002Fapi.csbyte.com\u002Fuploads\u002Feditor\u002F554489e1-d142-4ea5-a393-994a13d7b113_exception-handling.png","2026-06-12T17:15:16.253Z",{"alias":43,"title":44,"description":45,"thumbnail":46,"createdAt":47,"tutorialAlias":29,"lessonAlias":29},"spring-boot-create-libraries-gradle","Building Reusable Spring Boot Libraries with Gradle","Architectural Guide: Building Reusable Spring Boot Libraries with Gradle","https:\u002F\u002Fapi.csbyte.com\u002Fuploads\u002Feditor\u002Ff4fb088d-1018-4d2b-ae6c-cdd5d0fd60ae_spring-Initializr.png","2026-06-12T15:55:20.994Z",{"alias":49,"title":50,"description":51,"thumbnail":52,"createdAt":53,"tutorialAlias":29,"lessonAlias":29},"multi-build-project-gradle-spring-boot","Setting up a multi-project build in Gradle for Spring Boot","How to set up a multi-project build in Gradle for Spring Boot","https:\u002F\u002Fapi.csbyte.com\u002Fuploads\u002Feditor\u002Fd43933e4-a7a3-404b-a300-8f02db98f549_multi-build-project.png","2026-06-12T04:15:23.045Z",{"alias":55,"title":56,"description":57,"thumbnail":58,"createdAt":59,"tutorialAlias":29,"lessonAlias":29},"java-version-mismatch-gradle","Java Version Mismatch for Gradle Build","How to Fix Gradle Error: Dependency requires at least JVM runtime version 17. This build uses a Java 8 JVM","\u002Fuploads\u002Fthumbnails\u002Fa4c6c910-5623-4db9-93f5-a515135adb99_gradle_version_mismatc.jpeg","2026-06-09T12:15:21.729Z",{"alias":61,"title":62,"description":63,"thumbnail":64,"createdAt":65,"tutorialAlias":29,"lessonAlias":29},"constructor-confusion-in-spring","Constructor Confusion in Spring Framework","Constructor Confusion and how to handle it in Spring Framework","\u002Fuploads\u002Fthumbnails\u002Fd0f09fc0-e1f9-49d1-bf9a-7d1c41050196_di_confusio.jpeg","2026-05-21T14:13:31.437Z",{"alias":67,"title":68,"description":69,"thumbnail":70,"createdAt":71,"tutorialAlias":29,"lessonAlias":29},"dependency-pull-lookup-spring","Dependency Pull and Contextualized Dependency Lookup in Spring Framework","Dependency Pull and Contextualized Dependency Lookup IoC Types in Spring Framework","\u002Fuploads\u002Fthumbnails\u002Fd1132443-313b-4dce-b713-55f356ef6051_depndency_pull.png","2026-05-20T15:26:06.494Z",{"alias":73,"title":74,"description":74,"thumbnail":75,"createdAt":76,"tutorialAlias":29,"lessonAlias":29},"types-of-dependency-injection-spring","Types of Dependency Injection in Spring Framework","\u002Fuploads\u002Fthumbnails\u002Fafb32399-6dda-41c4-b07c-7decb8257bbb_di_constructor_sette.jpeg","2026-05-19T17:01:51.972Z",{"alias":78,"title":79,"description":80,"thumbnail":81,"createdAt":82,"tutorialAlias":29,"lessonAlias":29},"spring-framework-project-for-gradle-with-intellij-idea","How to create a clean Spring Framework project for Gradle with IntelliJ IDEA","Create a clean Spring Framework project for Gradle with IntelliJ IDEA","https:\u002F\u002Fapi.csbyte.com\u002Fuploads\u002Feditor\u002F0e4abad5-17e2-4311-8cf0-7d8f67af975a_spring-framework.png","2026-05-19T10:28:20.866Z",{"alias":84,"title":85,"description":86,"thumbnail":87,"createdAt":88,"tutorialAlias":29,"lessonAlias":29},"spring-dependency-injection-and-inversion-control","Dependency Injection (DI) and Inversion of Control (IoC) in Spring","Mastering Dependency Injection (DI) and Inversion of Control (IoC) in Spring: A Practical Guide for Building a Notification System","\u002Fuploads\u002Fthumbnails\u002F53c64b94-f188-40b4-9ae9-ad97612d688b_spring_d.jpeg","2026-05-19T05:31:45.138Z",{"alias":90,"title":91,"description":92,"thumbnail":93,"createdAt":94,"tutorialAlias":29,"lessonAlias":29},"setting-nginx-ssl-for-spring-boot-application","Setup Nginx and SSL for Spring Boot Application","Setting Nginx as a reverse proxy in our Spring Boot application","\u002Fuploads\u002Fthumbnails\u002F5433c987-9e86-4d90-9cce-a831d1598ba4_spring-boot-nginx.png","2026-05-04T05:36:23.075Z",{"alias":96,"title":97,"description":98,"thumbnail":99,"createdAt":100,"tutorialAlias":29,"lessonAlias":29},"deploy-spring-boot-application-with-docker","Deploy Spring Boot Application with Docker on Ubuntu Server","The ultimate guide to deploying our Spring Boot application with Docker on an Ubuntu server","https:\u002F\u002Fapi.csbyte.com\u002Fuploads\u002Feditor\u002F55a11844-d1e9-4e83-80e5-c6bb6df7d58b_intellij-idea-build.png","2026-05-03T05:58:55.642Z"]