Spring Boot Basics
Introduction to Spring Boot
Spring Boot simplifies the development of Spring-based applications by providing pre-configured setups and reducing boilerplate code. It is built on top of the Spring Framework.
Key Features of Spring Boot
- Auto-Configuration: Automatically configures Spring beans based on the classpath and application properties.
- Standalone Applications: Allows running applications without requiring an external application server.
- Embedded Servers: Comes with embedded servers like Tomcat, Jetty, or Undertow.
- Production-Ready Features: Includes metrics, health checks, and externalized configuration.
- Spring Boot Starter Dependencies: Simplifies dependency management by providing starter POMs.
- Spring Boot CLI: Allows running Groovy scripts for rapid prototyping.
Spring Boot Application
Example
Application.java
package com.example;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Application {
public static void main(String[] args) {
ApplicationContext context = SpringApplication.run(Application.class, args);
Computer computer = context.getBean("computer", Computer.class);
computer.displaySpecs();
}
}
Dependency Injection in Spring Boot
Spring Boot supports dependency injection using annotations like @Autowired, @Qualifier, and @Primary.
Example
@Component
public class Computer {
private final Processor processor;
private final Memory memory;
@Autowired
public Computer(Processor processor, Memory memory) {
this.processor = processor;
this.memory = memory;
}
public void displaySpecs() {
System.out.println("Processor: " + processor.getDetails());
System.out.println("Memory: " + memory.getDetails());
}
}
@Component
public class Computer {
private Processor processor;
private Memory memory;
@Autowired
public void setProcessor(Processor processor) {
this.processor = processor;
}
@Autowired
public void setMemory(Memory memory) {
this.memory = memory;
}
public void displaySpecs() {
System.out.println("Processor: " + processor.getDetails());
System.out.println("Memory: " + memory.getDetails());
}
}
Configuration Properties
Spring Boot allows binding external configuration to Java objects using @ConfigurationProperties.
Example
@Component
@ConfigurationProperties(prefix = "app")
public class AppConfig {
private String name;
private String version;
// Getters and setters
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getVersion() {
return version;
}
public void setVersion(String version) {
this.version = version;
}
}
Profiles in Spring Boot
Spring Boot supports profiles to define environment-specific configurations.
Validation
Spring Boot supports validation using @Valid and @Validated.
Example
Event Handling
Spring Boot supports event handling using ApplicationEvent and @EventListener.
Example
Logging
Spring Boot uses SLF4J with Logback as the default logging framework.