Agent Skills: Spring Boot Basics Skill

Comprehensive guide to Spring Boot fundamentals - auto-configuration, starters, properties, and profiles

spring-bootauto-configurationstarterspropertiesprofiles
backendID: pluginagentmarketplace/custom-plugin-spring-boot/spring-boot-basics

Skill Files

Browse the full folder contents for spring-boot-basics.

Download Skill

Loading file tree…

skills/spring-boot-basics/SKILL.md

Skill Metadata

Name
spring-boot-basics
Description
Comprehensive guide to Spring Boot fundamentals - auto-configuration, starters, properties, and profiles

Spring Boot Basics Skill

Master Spring Boot fundamentals including auto-configuration, starters, externalized configuration, and profile management.

Overview

This skill provides comprehensive knowledge for building production-ready Spring Boot applications from scratch.

Parameters

| Name | Type | Required | Default | Validation | |------|------|----------|---------|------------| | spring_version | string | ✗ | 3.3.x | Semver format | | java_version | number | ✗ | 21 | 17, 21, or 23 | | build_tool | enum | ✗ | maven | maven | gradle | | packaging | enum | ✗ | jar | jar | war |

Topics Covered

Core (Must Know)

  • Auto-Configuration: How Spring Boot auto-configures beans based on classpath
  • Starters: Pre-configured dependency sets for common scenarios
  • Application Properties: Externalized configuration with application.properties/yml
  • Profiles: Environment-specific configuration with @Profile

Intermediate

  • Configuration Properties: Type-safe configuration with @ConfigurationProperties
  • Actuator: Production-ready monitoring and management endpoints
  • Logging: Logback/Log4j2 configuration and best practices
  • DevTools: Development-time features for productivity

Advanced

  • Custom Starters: Building reusable starter modules
  • Auto-Configuration Classes: Creating custom auto-configuration
  • Conditional Beans: @ConditionalOnProperty, @ConditionalOnClass
  • Native Compilation: GraalVM native image support

Code Examples

Basic Application

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

Configuration Properties

@ConfigurationProperties(prefix = "app")
@Validated
public record AppConfig(
    @NotBlank String name,
    @NotNull Database database,
    List<String> allowedOrigins
) {
    public record Database(
        @NotBlank String url,
        String username,
        String password,
        @Min(1) @Max(100) int poolSize
    ) {}
}
# application.yml
app:
  name: my-service
  database:
    url: jdbc:postgresql://localhost:5432/mydb
    username: ${DB_USER}
    password: ${DB_PASSWORD}
    pool-size: 10
  allowed-origins:
    - http://localhost:3000
    - https://myapp.com

Profile-Specific Configuration

# application-dev.yml
spring:
  config:
    activate:
      on-profile: dev
  datasource:
    url: jdbc:h2:mem:devdb

---
# application-prod.yml
spring:
  config:
    activate:
      on-profile: prod
  datasource:
    url: jdbc:postgresql://${DB_HOST}:5432/proddb

Actuator Configuration

management:
  endpoints:
    web:
      exposure:
        include: health,info,metrics,prometheus
  endpoint:
    health:
      show-details: when_authorized
      probes:
        enabled: true

Retry Logic

| Scenario | Max Retries | Backoff | Notes | |----------|-------------|---------|-------| | Config server connection | 6 | 1s, 1.5x multiplier | Use spring.config.import | | Database connection | 3 | 2s exponential | Configure in connection pool |

Troubleshooting

Failure Modes

| Issue | Diagnosis | Fix | |-------|-----------|-----| | Bean not created | Check @ConditionalOn* | Run with --debug flag | | Property not binding | Wrong prefix or type | Validate YAML syntax | | Profile not active | Not set in env | Use -Dspring.profiles.active |

Debug Checklist

□ Run with --debug to see auto-configuration report
□ Verify property sources with /actuator/env
□ Confirm active profiles with /actuator/info
□ Check application.yml indentation

Unit Test Template

@SpringBootTest
class ApplicationConfigTest {

    @Autowired
    private AppConfig appConfig;

    @Test
    void shouldLoadConfiguration() {
        assertThat(appConfig.name()).isEqualTo("my-service");
        assertThat(appConfig.database().poolSize()).isEqualTo(10);
    }
}

Usage

Skill("spring-boot-basics")

Version History

| Version | Date | Changes | |---------|------|---------| | 2.0.0 | 2024-12-30 | Production-grade with examples, troubleshooting | | 1.0.0 | 2024-01-01 | Initial release |