OpenAPI integration with Spring Boot

1. Add Dependencies

In your pom.xml (for Maven), include Spring Boot and Springdoc OpenAPI:

<dependencies>
    <!-- Spring Boot Web -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <!-- Springdoc OpenAPI -->
    <dependency>
        <groupId>org.springdoc</groupId>
        <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
        <version>2.2.0</version>
    </dependency>
    
    <!-- Optional: Lombok for cleaner code -->
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <optional>true</optional>
    </dependency>
</dependencies>

2. Create a Simple REST Controller

package com.example.demo.controller;

import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;

@RestController
@Tag(name = "Greeting API", description = "API for greeting messages")
public class GreetingController {

    @GetMapping("/greet/{name}")
    @Operation(summary = "Greet a person by name")
    public String greet(@PathVariable String name) {
        return "Hello, " + name + "!";
    }
}

3. Application Class

package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class DemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}

4. Run the Application

Start your Spring Boot app (DemoApplication).

Then access the OpenAPI UI (Swagger UI) at:

http://localhost:8080/swagger-ui/index.html

You should see your Greeting API documented automatically with Swagger.


✅ Optional: Customize OpenAPI Info

You can add a configuration class to customize metadata:

package com.example.demo.config;

import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.info.Info;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class OpenApiConfig {

    @Bean
    public OpenAPI customOpenAPI() {
        return new OpenAPI()
                .info(new Info()
                        .title("My Spring Boot API")
                        .version("1.0")
                        .description("Example API with OpenAPI/Swagger"));
    }
}

Leave a Reply