diff --git a/spring-boot-modules/spring-boot-libraries-3/pom.xml b/spring-boot-modules/spring-boot-libraries-3/pom.xml
index 39d594cdfe..e88ae4c078 100644
--- a/spring-boot-modules/spring-boot-libraries-3/pom.xml
+++ b/spring-boot-modules/spring-boot-libraries-3/pom.xml
@@ -17,7 +17,6 @@
org.springframework.boot
spring-boot-starter-data-jpa
-
org.springframework.kafka
spring-kafka
@@ -28,20 +27,27 @@
postgresql
${postgresql.version}
+
org.springframework.modulith
spring-modulith-events-api
- ${spring-modulith-events-kafka.version}
+ ${spring-modulith.version}
org.springframework.modulith
spring-modulith-events-kafka
- ${spring-modulith-events-kafka.version}
+ ${spring-modulith.version}
org.springframework.modulith
spring-modulith-starter-jpa
- ${spring-modulith-events-kafka.version}
+ ${spring-modulith.version}
+
+
+ org.springframework.modulith
+ spring-modulith-starter-test
+ ${spring-modulith.version}
+ test
@@ -54,20 +60,6 @@
spring-boot-testcontainers
test
-
-
- org.springframework.modulith
- spring-modulith-starter-test
- 1.1.3
-
-
-
- com.h2database
- h2
- 2.2.224
- test
-
-
org.testcontainers
kafka
@@ -86,7 +78,6 @@
${testcontainers.version}
test
-
org.testcontainers
postgresql
@@ -100,16 +91,23 @@
${awaitility.version}
test
+
+ com.h2database
+ h2
+ ${h2.version}
+ test
+
17
3.1.5
- 1.1.2
+ 1.1.3
1.19.3
4.2.0
42.3.1
+ 2.2.224
diff --git a/spring-boot-modules/spring-boot-libraries-3/src/main/java/com/baeldung/springmodulith/application/events/orders/Order.java b/spring-boot-modules/spring-boot-libraries-3/src/main/java/com/baeldung/springmodulith/application/events/orders/Order.java
index a0ba6815bc..c448bd44dd 100644
--- a/spring-boot-modules/spring-boot-libraries-3/src/main/java/com/baeldung/springmodulith/application/events/orders/Order.java
+++ b/spring-boot-modules/spring-boot-libraries-3/src/main/java/com/baeldung/springmodulith/application/events/orders/Order.java
@@ -5,8 +5,8 @@ import java.util.List;
record Order(String id, String customerId, List productIds, Instant timestamp) {
- public Order(String customerId, List productIds) {
- this(null, customerId, productIds, Instant.now());
- }
+ public Order(String customerId, List productIds) {
+ this(null, customerId, productIds, Instant.now());
+ }
}
diff --git a/spring-boot-modules/spring-boot-libraries-3/src/main/java/com/baeldung/springmodulith/application/events/orders/OrderRepository.java b/spring-boot-modules/spring-boot-libraries-3/src/main/java/com/baeldung/springmodulith/application/events/orders/OrderRepository.java
index d02b00d2d0..7c159e3582 100644
--- a/spring-boot-modules/spring-boot-libraries-3/src/main/java/com/baeldung/springmodulith/application/events/orders/OrderRepository.java
+++ b/spring-boot-modules/spring-boot-libraries-3/src/main/java/com/baeldung/springmodulith/application/events/orders/OrderRepository.java
@@ -1,25 +1,27 @@
package com.baeldung.springmodulith.application.events.orders;
-import org.springframework.stereotype.Component;
-
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
+import org.springframework.stereotype.Component;
+
@Component
class OrderRepository {
- private final List orders = new ArrayList<>();
+ private final List orders = new ArrayList<>();
- public Order save(Order order) {
- order = new Order(UUID.randomUUID().toString(), order.customerId(), order.productIds(), order.timestamp());
- orders.add(order);
- return order;
- }
+ public Order save(Order order) {
+ order = new Order(UUID.randomUUID()
+ .toString(), order.customerId(), order.productIds(), order.timestamp());
+ orders.add(order);
+ return order;
+ }
- public List ordersByCustomer(String customerId) {
- return orders.stream()
- .filter(it -> it.customerId().equals(customerId))
- .toList();
- }
+ public List ordersByCustomer(String customerId) {
+ return orders.stream()
+ .filter(it -> it.customerId()
+ .equals(customerId))
+ .toList();
+ }
}
diff --git a/spring-boot-modules/spring-boot-libraries-3/src/main/java/com/baeldung/springmodulith/application/events/orders/OrderService.java b/spring-boot-modules/spring-boot-libraries-3/src/main/java/com/baeldung/springmodulith/application/events/orders/OrderService.java
index c3b52d478b..c60792813c 100644
--- a/spring-boot-modules/spring-boot-libraries-3/src/main/java/com/baeldung/springmodulith/application/events/orders/OrderService.java
+++ b/spring-boot-modules/spring-boot-libraries-3/src/main/java/com/baeldung/springmodulith/application/events/orders/OrderService.java
@@ -1,29 +1,29 @@
package com.baeldung.springmodulith.application.events.orders;
+import java.util.Arrays;
+
import org.springframework.context.ApplicationEventPublisher;
import org.springframework.stereotype.Service;
-import java.util.Arrays;
-
@Service
public class OrderService {
- private final OrderRepository repository;
- private final ApplicationEventPublisher eventPublisher;
+ private final OrderRepository repository;
+ private final ApplicationEventPublisher eventPublisher;
- public OrderService(OrderRepository orders, ApplicationEventPublisher eventsPublisher) {
- this.repository = orders;
- this.eventPublisher = eventsPublisher;
- }
+ public OrderService(OrderRepository orders, ApplicationEventPublisher eventsPublisher) {
+ this.repository = orders;
+ this.eventPublisher = eventsPublisher;
+ }
- public void placeOrder(String customerId, String... productIds) {
- Order order = new Order(customerId, Arrays.asList(productIds));
- // business logic to validate and place the order
+ public void placeOrder(String customerId, String... productIds) {
+ Order order = new Order(customerId, Arrays.asList(productIds));
+ // business logic to validate and place the order
- Order savedOrder = repository.save(order);
+ Order savedOrder = repository.save(order);
- OrderCompletedEvent event = new OrderCompletedEvent(savedOrder.id(), savedOrder.customerId(), savedOrder.timestamp());
- eventPublisher.publishEvent(event);
- }
+ OrderCompletedEvent event = new OrderCompletedEvent(savedOrder.id(), savedOrder.customerId(), savedOrder.timestamp());
+ eventPublisher.publishEvent(event);
+ }
}
diff --git a/spring-boot-modules/spring-boot-libraries-3/src/main/java/com/baeldung/springmodulith/application/events/rewards/LoyalCustomersRepository.java b/spring-boot-modules/spring-boot-libraries-3/src/main/java/com/baeldung/springmodulith/application/events/rewards/LoyalCustomersRepository.java
index c4afae0d5d..29ba6fa8e2 100644
--- a/spring-boot-modules/spring-boot-libraries-3/src/main/java/com/baeldung/springmodulith/application/events/rewards/LoyalCustomersRepository.java
+++ b/spring-boot-modules/spring-boot-libraries-3/src/main/java/com/baeldung/springmodulith/application/events/rewards/LoyalCustomersRepository.java
@@ -1,44 +1,44 @@
package com.baeldung.springmodulith.application.events.rewards;
-import org.springframework.stereotype.Component;
-
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
+import org.springframework.stereotype.Component;
+
@Component
public class LoyalCustomersRepository {
- private List customers = new ArrayList<>();
+ private List customers = new ArrayList<>();
- public Optional find(String customerId) {
- return customers.stream()
- .filter(it -> it.customerId().equals(customerId))
- .findFirst();
- }
+ public Optional find(String customerId) {
+ return customers.stream()
+ .filter(it -> it.customerId()
+ .equals(customerId))
+ .findFirst();
+ }
- public void awardPoints(String customerId, int points) {
- var customer = find(customerId)
- .orElseGet(() -> save(new LoyalCustomer(customerId, 0)));
+ public void awardPoints(String customerId, int points) {
+ var customer = find(customerId).orElseGet(() -> save(new LoyalCustomer(customerId, 0)));
- customers.remove(customer);
- customers.add(customer.addPoints(points));
- }
+ customers.remove(customer);
+ customers.add(customer.addPoints(points));
+ }
- public LoyalCustomer save(LoyalCustomer customer) {
- customers.add(customer);
- return customer;
- }
+ public LoyalCustomer save(LoyalCustomer customer) {
+ customers.add(customer);
+ return customer;
+ }
- public boolean isLoyalCustomer(String customerId) {
- return find(customerId).isPresent();
- }
+ public boolean isLoyalCustomer(String customerId) {
+ return find(customerId).isPresent();
+ }
- public record LoyalCustomer(String customerId, int points) {
+ public record LoyalCustomer(String customerId, int points) {
- LoyalCustomer addPoints(int points) {
- return new LoyalCustomer(customerId, this.points() + points);
- }
- }
+ LoyalCustomer addPoints(int points) {
+ return new LoyalCustomer(customerId, this.points() + points);
+ }
+ }
}
diff --git a/spring-boot-modules/spring-boot-libraries-3/src/main/java/com/baeldung/springmodulith/application/events/rewards/LoyaltyPointsService.java b/spring-boot-modules/spring-boot-libraries-3/src/main/java/com/baeldung/springmodulith/application/events/rewards/LoyaltyPointsService.java
index 3febcf0d66..8cd1afe329 100644
--- a/spring-boot-modules/spring-boot-libraries-3/src/main/java/com/baeldung/springmodulith/application/events/rewards/LoyaltyPointsService.java
+++ b/spring-boot-modules/spring-boot-libraries-3/src/main/java/com/baeldung/springmodulith/application/events/rewards/LoyaltyPointsService.java
@@ -1,23 +1,24 @@
package com.baeldung.springmodulith.application.events.rewards;
-import com.baeldung.springmodulith.application.events.orders.OrderCompletedEvent;
import org.springframework.context.event.EventListener;
import org.springframework.stereotype.Service;
+import com.baeldung.springmodulith.application.events.orders.OrderCompletedEvent;
+
@Service
public class LoyaltyPointsService {
- public static final int ORDER_COMPLETED_POINTS = 60;
- private final LoyalCustomersRepository loyalCustomers;
+ public static final int ORDER_COMPLETED_POINTS = 60;
+ private final LoyalCustomersRepository loyalCustomers;
- public LoyaltyPointsService(LoyalCustomersRepository loyalCustomers) {
- this.loyalCustomers = loyalCustomers;
- }
+ public LoyaltyPointsService(LoyalCustomersRepository loyalCustomers) {
+ this.loyalCustomers = loyalCustomers;
+ }
- @EventListener
- public void onOrderCompleted(OrderCompletedEvent event) {
- // business logic to award points to loyal customers
- loyalCustomers.awardPoints(event.customerId(), ORDER_COMPLETED_POINTS);
- }
+ @EventListener
+ public void onOrderCompleted(OrderCompletedEvent event) {
+ // business logic to award points to loyal customers
+ loyalCustomers.awardPoints(event.customerId(), ORDER_COMPLETED_POINTS);
+ }
}
diff --git a/spring-boot-modules/spring-boot-libraries-3/src/test/java/com/baeldung/springmodulith/application/events/EventListenerUnitTest.java b/spring-boot-modules/spring-boot-libraries-3/src/test/java/com/baeldung/springmodulith/application/events/EventListenerUnitTest.java
index a54d003eb2..676bc1173b 100644
--- a/spring-boot-modules/spring-boot-libraries-3/src/test/java/com/baeldung/springmodulith/application/events/EventListenerUnitTest.java
+++ b/spring-boot-modules/spring-boot-libraries-3/src/test/java/com/baeldung/springmodulith/application/events/EventListenerUnitTest.java
@@ -4,12 +4,10 @@ import static org.assertj.core.api.Assertions.assertThat;
import java.time.Instant;
-import org.assertj.core.api.Assertions;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.context.ApplicationEventPublisher;
-import org.springframework.context.annotation.ComponentScan;
import com.baeldung.springmodulith.application.events.orders.OrderCompletedEvent;
import com.baeldung.springmodulith.application.events.rewards.LoyalCustomersRepository;
@@ -17,22 +15,22 @@ import com.baeldung.springmodulith.application.events.rewards.LoyalCustomersRepo
@SpringBootTest
class EventListenerUnitTest {
- @Autowired
- private LoyalCustomersRepository customers;
+ @Autowired
+ private LoyalCustomersRepository customers;
- @Autowired
- private ApplicationEventPublisher testEventPublisher;
+ @Autowired
+ private ApplicationEventPublisher testEventPublisher;
- @Test
- void whenPublishingOrderCompletedEvent_thenRewardCustomerWithLoyaltyPoints() {
- OrderCompletedEvent event = new OrderCompletedEvent("order-1", "customer-1", Instant.now());
+ @Test
+ void whenPublishingOrderCompletedEvent_thenRewardCustomerWithLoyaltyPoints() {
+ OrderCompletedEvent event = new OrderCompletedEvent("order-1", "customer-1", Instant.now());
- testEventPublisher.publishEvent(event);
+ testEventPublisher.publishEvent(event);
- assertThat(customers.find("customer-1"))
- .isPresent().get()
- .hasFieldOrPropertyWithValue("customerId", "customer-1")
- .hasFieldOrPropertyWithValue("points", 60);
- }
+ assertThat(customers.find("customer-1"))
+ .isPresent().get()
+ .hasFieldOrPropertyWithValue("customerId", "customer-1")
+ .hasFieldOrPropertyWithValue("points", 60);
+ }
}