1. Create a New Spring Boot Project


spring init --type=web --project-name=myproject

2. Add Dependencies to pom.xml


<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>

3. Create a New Spring Boot Application


@SpringBootApplication
public class MyApplication {
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
}

4. Create a New REST Controller


@RestController
@RequestMapping("/api")
public class MyController {
@GetMapping("/hello")
public String hello() {
return "Hello, World!";
}
}

5. Use @Autowired for Dependency Injection


@Service
public class MyService {
@Autowired
private MyRepository myRepository;

public List<MyEntity> getAll() {
return myRepository.findAll();
}
}

6. Use @Value for Property Injection


@Service
public class MyService {
@Value("${my.property}")
private String myProperty;

public String getMyProperty() {
return myProperty;
}
}

7. Use @Configuration for Configuration Classes


@Configuration
public class MyConfig {
@Bean
public MyBean myBean() {
return new MyBean();
}
}

8. Use @Bean for Bean Definitions


@Configuration
public class MyConfig {
@Bean
public MyBean myBean() {
return new MyBean();
}
}

9. Use @ComponentScan for Component Scanning


@SpringBootApplication
@ComponentScan(basePackages = "com.example")
public class MyApplication {
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
}

10. Use @EnableAutoConfiguration for Auto-Configuration


@SpringBootApplication
@EnableAutoConfiguration
public class MyApplication {
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
}

11. Use @SpringBootApplication for Spring Boot Applications


@SpringBootApplication
public class MyApplication {
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
}

12. Use @RestController for REST Controllers


@RestController
@RequestMapping("/api")
public class MyController {
@GetMapping("/hello")
public String hello() {
return "Hello, World!";
}
}

13. Use @GetMapping for GET Requests


@RestController
@RequestMapping("/api")
public class MyController {
@GetMapping("/hello")
public String hello() {
return "Hello, World!";
}
}

14. Use @PostMapping for POST Requests


@RestController
@RequestMapping("/api")
public class MyController {
@PostMapping("/hello")
public String hello(@RequestBody MyRequest request) {
return "Hello, " + request.getName();
}
}

15. Use @PutMapping for PUT Requests


@RestController
@RequestMapping("/api")
public class MyController {
@PutMapping("/hello")
public String hello(@RequestBody MyRequest request) {
return "Hello, " + request.getName();
}
}

16. Use @DeleteMapping for DELETE Requests


@RestController
@RequestMapping("/api")
public class MyController {
@DeleteMapping("/hello")
public String hello() {
return "Hello, World!";
}
}

17. Use @PathVariable for Path Variables


@RestController
@RequestMapping("/api")
public class MyController {
@GetMapping("/hello/{name}")
public String hello(@PathVariable String name) {
return "Hello, " + name;
}
}

18. Use @RequestParam for Request Parameters


@RestController
@RequestMapping("/api")
public class MyController {
@GetMapping("/hello")
public String hello(@RequestParam String name) {
return "Hello, " + name;
}
}

19. Use @RequestBody for Request Body


@RestController
@RequestMapping("/api")
public class MyController {
@PostMapping("/hello")
public String hello(@RequestBody MyRequest request) {
return "Hello, " + request.getName();
}
}

20. Use @ResponseBody for Response Body


@RestController
@RequestMapping("/api")
public class MyController {
@GetMapping("/hello")
@ResponseBody
public String hello() {
return "Hello, World!";
}
}

21. Use @ExceptionHandler for Exception Handling


@RestController
@RequestMapping("/api")
public class MyController {
@GetMapping("/hello")
public String hello() {
throw new RuntimeException("Error occurred");
}

@ExceptionHandler(RuntimeException.class)
public ResponseEntity<String> handleException(RuntimeException e) {
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(e.getMessage());
}
}

22. Use @ControllerAdvice for Global Exception Handling


@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(RuntimeException.class)
public ResponseEntity<String> handleException(RuntimeException e) {
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(e.getMessage());
}
}

23. Use @ResponseStatus for Custom Response Status


@ResponseStatus(HttpStatus.NOT_FOUND)
public class ResourceNotFoundException extends RuntimeException {
public ResourceNotFoundException(String message) {
super(message);
}
}

24. Use @Transactional for Transaction Management


@Service
public class MyService {
@Transactional
public void performTransaction() {
// Transactional code here
}
}

25. Use Spring Data JPA for Database Access


@Repository
public interface MyRepository extends JpaRepository<MyEntity, Long> {
}

26. Use @Entity for JPA Entities


@Entity
public class MyEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

private String name;
}

27. Use @Table for Custom Table Names


@Entity
@Table(name = "my_table")
public class MyEntity {
// Fields and methods
}

28. Use @Column for Custom Column Names


@Entity
public class MyEntity {
@Column(name = "my_name")
private String name;
}

29. Use @OneToMany for One-to-Many Relationships


@Entity
public class Parent {
@OneToMany(mappedBy = "parent")
private List<Child> children;
}

30. Use @ManyToOne for Many-to-One Relationships


@Entity
public class Child {
@ManyToOne
@JoinColumn(name = "parent_id")
private Parent parent;
}

31. Use @ManyToMany for Many-to-Many Relationships


@Entity
public class Student {
@ManyToMany
@JoinTable(name = "student_course",
joinColumns = @JoinColumn(name = "student_id"),
inverseJoinColumns = @JoinColumn(name = "course_id"))
private List<Course> courses;
}

32. Use @JoinColumn for Custom Join Columns


@Entity
public class Child {
@ManyToOne
@JoinColumn(name = "parent_id", referencedColumnName = "id")
private Parent parent;
}

33. Use @Query for Custom Queries


@Repository
public interface MyRepository extends JpaRepository<MyEntity, Long> {
@Query("SELECT e FROM MyEntity e WHERE e.name = ?1")
List<MyEntity> findByName(String name);
}

34. Use @Modifying for Update/Delete Queries


@Repository
public interface MyRepository extends JpaRepository<MyEntity, Long> {
@Modifying
@Query("DELETE FROM MyEntity e WHERE e .name = ?1")
void deleteByName(String name);
}

35. Use @Transactional for Rollback on Exception


@Service
public class MyService {
@Transactional(rollbackFor = Exception.class)
public void performTransaction() {
// Transactional code here
}
}

36. Use Spring Security for Authentication


@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.anyRequest().authenticated()
.and()
.formLogin();
}
}

37. Use @PreAuthorize for Method Security


@Service
public class MyService {
@PreAuthorize("hasRole('ADMIN')")
public void adminMethod() {
// Admin-only method
}
}

38. Use @Secured for Role-Based Security


@Service
public class MyService {
@Secured("ROLE_USER")
public void userMethod() {
// User-only method
}
}

39. Use @EnableGlobalMethodSecurity for Method Security


@Configuration
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class MethodSecurityConfig extends WebSecurityConfigurerAdapter {
}

40. Use Spring Boot Actuator for Monitoring


// Add dependency in pom.xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

41. Use /actuator for Health Checks


GET /actuator/health

42. Use /actuator/info for Application Info


GET /actuator/info

43. Use Spring Boot Profiles for Environment Management


// application.properties
spring.profiles.active=dev

44. Use @Profile for Profile-Specific Beans


@Configuration
@Profile("dev")
public class DevConfig {
@Bean
public MyBean myBean() {
return new MyBean("Development");
}
}

45. Use Spring Boot DevTools for Development


// Add dependency in pom.xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
</dependency>

46. Use @Scheduled for Scheduled Tasks


@EnableScheduling
@Service
public class MyService {
@Scheduled(fixedRate = 5000)
public void scheduledTask() {
// Task to run every 5 seconds
}
}

47. Use @Async for Asynchronous Methods


@EnableAsync
@Service
public class MyService {
@Async
public CompletableFuture<String> asyncMethod() {
// Asynchronous code here
return CompletableFuture.completedFuture("Done");
}
}

48. Use Spring Boot Testing for Unit Tests


@SpringBootTest
public class MyServiceTests {
@Autowired
private MyService myService;

@Test
public void testService() {
assertNotNull(myService);
}
}

49. Use @MockBean for Mocking Beans in Tests


@SpringBootTest
public class MyServiceTests {
@MockBean
private MyRepository myRepository;

@Test
public void testService() {
when(myRepository.findAll()).thenReturn(new ArrayList<>());
// Test logic here
}
}

50. Use @DataJpaTest for JPA Tests


@DataJpaTest
public class MyRepositoryTests {
@Autowired
private MyRepository myRepository;

@Test
public void testFindByName() {
// Test logic here
}
}

51. Use @WebMvcTest for MVC Tests


@WebMvcTest(MyController.class)
public class MyControllerTests {
@Autowired private MockMvc mockMvc;

@Test
public void testHello() throws Exception {
mockMvc.perform(get("/api/hello"))
.andExpect(status().isOk())
.andExpect(content().string("Hello, World!"));
}
}

52. Use @SpringBootTest for Integration Tests


@SpringBootTest
public class MyApplicationTests {
@Test
public void contextLoads() {
// Test logic here
}
}

53. Use @TestPropertySource for Test Properties


@SpringBootTest
@TestPropertySource(locations = "classpath:test.properties")
public class MyServiceTests {
// Test logic here
}

54. Use @ActiveProfiles for Active Profiles in Tests


@SpringBootTest
@ActiveProfiles("test")
public class MyServiceTests {
// Test logic here
}

55. Use @ConfigurationProperties for Binding Properties


@ConfigurationProperties(prefix = "my")
public class MyProperties {
private String name;

// Getters and Setters
}

56. Use @EnableConfigurationProperties for Enabling Configuration Properties


@SpringBootApplication
@EnableConfigurationProperties(MyProperties.class)
public class MyApplication {
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
}

57. Use @RestControllerAdvice for Global REST Exception Handling


@RestControllerAdvice
public class GlobalRestExceptionHandler {
@ExceptionHandler(RuntimeException.class)
public ResponseEntity<String> handleRuntimeException(RuntimeException e) {
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(e.getMessage());
}
}

58. Use @Cacheable for Caching Results


@Service
public class MyService {
@Cacheable("items")
public List<Item> getItems() {
// Fetch items from database
}
}

59. Use @CacheEvict for Evicting Cached Results


@Service
public class MyService {
@CacheEvict(value = "items", allEntries = true)
public void clearCache() {
// Clear cache logic
}
}

60. Use @CachePut for Updating Cached Results


@Service
public class MyService {
@CachePut(value = "items", key = "#item.id")
public Item updateItem(Item item) {
// Update item logic
}
}

61. Use @Scheduled for Scheduling Tasks


@EnableScheduling
@Service
public class MyService {
@Scheduled(fixedRate = 5000)
public void scheduledTask() {
// Task logic
}
}

62. Use @Async for Asynchronous Execution


@EnableAsync
@Service
public class MyService {
@Async
public CompletableFuture<String> asyncMethod() {
// Asynchronous logic
return CompletableFuture.completedFuture("Done");
}
}

63. Use @EnableScheduling for Scheduling Tasks


@Configuration
@EnableScheduling
public class SchedulerConfig {
// Configuration logic
}

64. Use @EnableAsync for Asynchronous Execution


@Configuration
@EnableAsync
public class AsyncConfig {
// Configuration logic
}

65. Use Spring Boot Starter for Web Applications


<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>

66. Use Spring Boot Starter for Data JPA


<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

67. Use Spring Boot Starter for Security


<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>

68. Use Spring Boot Starter for Actuator


<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

69. Use Spring Boot Starter for Testing


<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>

70. Use Spring Boot Starter for Thymeleaf


<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

71. Use Spring Boot Starter for Mail


<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>

72. Use Spring Boot Starter for WebSocket


<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-websocket</artifactId>
</dependency>

73. Use Spring Boot Starter for Batch Processing


<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-batch</artifactId>
</dependency>

74. Use Spring Boot Starter for Data REST


<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-rest</artifactId>
</dependency>

75. Use Spring Boot Starter for Cloud


<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter</artifactId>
</dependency>

76. Use Spring Boot Starter for OpenFeign


<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

77. Use Spring Boot Starter for Config Client


<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>

78. Use Spring Boot Starter for Eureka Client


<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka-client</artifactId>
</dependency>

79. Use Spring Boot Starter for Ribbon


<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-ribbon</artifactId>
</dependency>

80. Use Spring Boot Starter for Hystrix


<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-hystrix</artifactId>
</dependency>

81. Use Spring Boot Starter for Gateway


<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>

82. Use Spring Boot Starter for Security OAuth2


< dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-oauth2</artifactId>
</dependency>

83. Use Spring Boot Starter for WebFlux


<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-webflux</artifactId>
</dependency>

84. Use Spring Boot Starter for Reactive Data


<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-r2dbc</artifactId>
</dependency>

85. Use Spring Boot Starter for Redis


<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

86. Use Spring Boot Starter for MongoDB


<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>

87. Use Spring Boot Starter for Cassandra


<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-cassandra</artifactId>
</dependency>

88. Use Spring Boot Starter for Elasticsearch


<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>

89. Use Spring Boot Starter for JPA Hibernate


<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

90. Use Spring Boot Starter for Thymeleaf


<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

91. Use Spring Boot Starter for FreeMarker


<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>

92. Use Spring Boot Starter for Mustache


<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mustache</artifactId>
</dependency>

93. Use Spring Boot Starter for WebSocket


<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-websocket</artifactId>
</dependency>

94. Use Spring Boot Starter for Batch Processing


<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-batch</artifactId>
</dependency>

95. Use Spring Boot Starter for Spring Cloud


<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter</artifactId>
</dependency>

96. Use Spring Boot Starter for Spring Cloud Config


<dependency>
<groupId>org.springframework ```html
.boot</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>

97. Use Spring Boot Starter for Spring Cloud Netflix


<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>

98. Use Spring Boot Starter for Spring Cloud Gateway


<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>

99. Use Spring Boot Starter for Spring Cloud OpenFeign


<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

100. Use Spring Boot Starter for Spring Cloud Circuit Breaker


<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-circuitbreaker-resilience4j</artifactId>
</dependency>