Spring Boot Annotations
1. Introduction
Annotations in Spring Boot are used to configure applications directly in Java code.
They help to:
Reduce XML configuration
Improve readability
Enable auto-configuration
Simplify dependency injection
2. Core Spring Boot Annotations
@SpringBootApplication
Main annotation for Spring Boot application
Combines:
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}@SpringBootConfiguration
Used for configuration class
Similar to @Configuration
@SpringBootConfiguration
public class AppConfig {
}@EnableAutoConfiguration
Enables auto configuration
Automatically configures beans
@EnableAutoConfiguration
public class AppConfig {
}@ComponentScan
Scans package for components
@ComponentScan("com.example")
public class AppConfig {
}3. Spring Bean Annotations
@Component
Marks class as Spring bean
@Component
public class EmailService {
}@Service
Used in service layer
@Service
public class UserService {
}@Repository
Used for database layer
@Repository
public class UserRepository {
}@Configuration
Used for configuration class
@Configuration
public class AppConfig {
}@Bean
Used to create bean manually
@Configuration
public class AppConfig {
@Bean
public RestTemplate restTemplate() {
return new RestTemplate();
}
}4. Dependency Injection Annotations
@Autowired
Automatically injects dependency
@Autowired
private UserService userService;@Qualifier
Specifies which bean to inject
@Autowired
@Qualifier("emailService")
private NotificationService service;@Primary
Default bean when multiple exist
@Primary
@Component
public class SmsService implements NotificationService {
}5. Web and REST API Annotations
@RestController
Used to create REST APIs
@RestController
public class HelloController {
}@RequestMapping
Maps URL path
@RequestMapping("/api")
public class ApiController {
}HTTP Method Annotations
@GetMapping → Fetch data
@PostMapping → Create data
@PutMapping → Update data
@DeleteMapping → Delete data
@GetMapping("/users")
public List<User> getUsers() {
return userService.getAllUsers();
}@PathVariable
Get value from URL
@GetMapping("/users/{id}")
public User getUser(@PathVariable int id) {
return userService.getUser(id);
}@RequestParam
Read query parameters
@GetMapping("/search")
public String search(@RequestParam String keyword) {
return keyword;
}@RequestBody
Read request body
@PostMapping("/users")
public User saveUser(@RequestBody User user) {
return userService.save(user);
}6. Configuration Annotations
@Value
Inject value from properties
@Value("${server.port}")
private String port;@ConfigurationProperties
Bind properties to class
@ConfigurationProperties(prefix = "app")
public class AppConfig {
private String name;
}7. Validation Annotations
@NotNull → Cannot be null
@NotBlank → Cannot be empty
@Email → Valid email
@Size → Size limit
public class User {
@NotBlank
private String username;
@Email
private String email;
}8. Exception Handling Annotations
@ExceptionHandler
Handle specific exception
@ExceptionHandler(Exception.class)
public String handleException() {
return "Error occurred";
}@ControllerAdvice
Global exception handling
@ControllerAdvice
public class GlobalExceptionHandler {
}9. JPA Annotations
@Entity → Define entity class
@Table → Map table
@Id → Primary key
@GeneratedValue → Auto generate ID
@Column → Map column
10. Conclusion
Annotations reduce configuration complexity
Widely used in Spring Boot applications
Improve code readability and maintainability