Java Spring Boot Cheat Sheet

Quick reference guide for Java Spring Boot: Annotations, REST controllers, Spring Data JPA, and application properties.

Languages
spring-boot
java
backend

Spring Boot is an open-source Java framework used to create stand-alone, production-grade Spring-based applications with minimal boilerplate.

Key Annotations Reference

Table
AnnotationTargetPurpose / Meaning
@SpringBootApplicationClassEnables auto-configuration, component scanning, and property support
@RestControllerClassMarks class as RESTful controller (combines @Controller & @ResponseBody)
@Service / @RepositoryClassMarks service layer business logic or data repository component
@AutowiredField/ConstructorTriggers Spring Dependency Injection
@GetMapping, @PostMappingMethodMap HTTP GET or POST request paths
@PathVariable, @RequestParamParameterExtract URL path parameters (/users/{id}) or query parameters

REST Controller & Spring Data JPA Example

java
// UserEntity.java
@Entity
@Table(name = "users")
public class UserEntity {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(nullable = false, unique = true)
    private String email;

    // Getters and Setters
}

// UserRepository.java
@Repository
public interface UserRepository extends JpaRepository<UserEntity, Long> {
    Optional<UserEntity> findByEmail(String email);
}

// UserController.java
@RestController
@RequestMapping("/api/v1/users")
public class UserController {
    private final UserRepository userRepository;

    @Autowired
    public UserController(UserRepository userRepository) {
        this.userRepository = userRepository;
    }

    @GetMapping("/{id}")
    public ResponseEntity<UserEntity> getUserById(@PathVariable Long id) {
        return userRepository.findById(id)
                .map(ResponseEntity::ok)
                .orElse(ResponseEntity.notFound().build());
    }
}

Maven & Gradle CLI Commands

Table
CommandAction / Purpose
./mvnw spring-boot:runStart Spring Boot application via Maven wrapper
./mvnw clean packageBuild executable JAR package in target/ directory
./gradlew bootRunStart Spring Boot application via Gradle wrapper
./gradlew buildBuild executable JAR package via Gradle

Common Pitfalls & Tips

[!WARNING] Component scanning only scans sub-packages located underneath the package containing @SpringBootApplication. Classes placed outside this root package tree will not be injected into Spring context!

[!TIP] Prefer constructor injection over @Autowired field injection for better testability and immutability.