Spring Boot Fundamentals
Spring Boot is the industry standard for Java backend development. It provides dependency injection, auto-configuration, embedded servers, and a rich ecosystem for building production-grade REST APIs.
45 min•By Priygop Team•Last updated: Feb 2026
Spring Boot REST API
Example
// Application entry point
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
// Entity (maps to database table)
@Entity
@Table(name = "users")
public class User {
@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(nullable = false)
private String name;
@Column(unique = true, nullable = false)
private String email;
// Getters, setters, constructors
}
// Repository (Spring Data JPA — no implementation needed!)
@Repository
public interface UserRepository extends JpaRepository<User, Long> {
Optional<User> findByEmail(String email);
List<User> findByNameContaining(String query);
}
// Service (business logic)
@Service
public class UserService {
private final UserRepository userRepository;
public UserService(UserRepository userRepository) {
this.userRepository = userRepository; // Constructor injection
}
public User createUser(CreateUserDto dto) {
if (userRepository.findByEmail(dto.email()).isPresent()) {
throw new DuplicateEmailException("Email already exists");
}
User user = new User(dto.name(), dto.email());
return userRepository.save(user);
}
public List<User> getAllUsers() {
return userRepository.findAll();
}
}
// REST Controller
@RestController
@RequestMapping("/api/users")
public class UserController {
private final UserService userService;
public UserController(UserService userService) {
this.userService = userService;
}
@GetMapping
public List<User> getAll() {
return userService.getAllUsers();
}
@PostMapping
@ResponseStatus(HttpStatus.CREATED)
public User create(@Valid @RequestBody CreateUserDto dto) {
return userService.createUser(dto);
}
@GetMapping("/{id}")
public User getById(@PathVariable Long id) {
return userService.findById(id)
.orElseThrow(() -> new ResourceNotFoundException("User not found"));
}
}