Tutorials Logic, IN +91 8092939553 info@tutorialslogic.com
FAQs Support
Navigation
Home About Us Contact Us Blogs FAQs
Tutorials
All Tutorials
Services
Academic Projects Resume Writing Interview Questions Website Development
Compiler Tutorials

Spring Boot

What is Spring Boot?

Spring Boot is an opinionated framework built on top of Spring that simplifies the setup and development of Spring applications. It provides:

  • Auto-configuration: Automatically configures Spring beans based on classpath dependencies
  • Starter dependencies: Curated dependency bundles (e.g., spring-boot-starter-web)
  • Embedded server: Tomcat, Jetty, or Undertow embedded — no WAR deployment needed
  • Production-ready features: Health checks, metrics, externalized configuration
  • No XML configuration: Convention over configuration
Auto-configuration and @SpringBootApplication
package com.example;

import org.springframework.boot.*;
import org.springframework.boot.autoconfigure.*;
import org.springframework.context.annotation.*;

// @SpringBootApplication combines:
// @Configuration       - Java config class
// @EnableAutoConfiguration - Enable Spring Boot auto-config
// @ComponentScan       - Scan for @Component, @Service, etc.
@SpringBootApplication
// Exclude specific auto-configurations if needed:
// @SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
public class Application {

    public static void main(String[] args) {
        // Customize SpringApplication
        SpringApplication app = new SpringApplication(Application.class);
        app.setBannerMode(Banner.Mode.OFF); // Disable startup banner
        app.run(args);
    }
}

// ApplicationRunner: runs code after application starts
@Component
public class StartupRunner implements ApplicationRunner {
    @Override
    public void run(ApplicationArguments args) throws Exception {
        System.out.println("Application started successfully!");
        // args.getOptionValues("server.port") - access command line args
    }
}

Profiles

Spring profiles allow you to have different configurations for different environments (dev, test, prod):

Spring Profiles
// Profile-specific beans
@Configuration
public class DataSourceConfig {

    @Bean
    @Profile("dev")
    public DataSource devDataSource() {
        // H2 in-memory database for development
        return new EmbeddedDatabaseBuilder()
                .setType(EmbeddedDatabaseType.H2)
                .build();
    }

    @Bean
    @Profile("prod")
    public DataSource prodDataSource() {
        // MySQL for production
        HikariDataSource ds = new HikariDataSource();
        ds.setJdbcUrl("jdbc:mysql://prod-server:3306/mydb");
        return ds;
    }
}

// Activate profile:
// application.properties: spring.profiles.active=dev
// Command line: java -jar app.jar --spring.profiles.active=prod
// Environment variable: SPRING_PROFILES_ACTIVE=prod
# application-dev.properties (active when profile=dev)
server.port=8080
spring.datasource.url=jdbc:h2:mem:devdb
spring.jpa.hibernate.ddl-auto=create-drop
logging.level.com.example=DEBUG

# application-prod.properties (active when profile=prod)
# server.port=80
# spring.datasource.url=jdbc:mysql://prod-server:3306/mydb
# spring.jpa.hibernate.ddl-auto=validate
# logging.level.com.example=WARN

Spring Boot Actuator

Actuator Configuration
# Actuator endpoints
management.endpoints.web.exposure.include=health,info,metrics,env,beans
management.endpoint.health.show-details=always
management.info.env.enabled=true

# Custom info
info.app.name=My Spring App
info.app.version=1.0.0
info.app.description=A sample Spring Boot application

# Actuator endpoints (after adding spring-boot-starter-actuator):
# GET /actuator/health  - Application health status
# GET /actuator/info    - Application info
# GET /actuator/metrics - Application metrics
# GET /actuator/env     - Environment properties
# GET /actuator/beans   - All Spring beans
# GET /actuator/mappings - All request mappings

Ready to Level Up Your Skills?

Explore 500+ free tutorials across 20+ languages and frameworks.