diff --git a/pom.xml b/pom.xml
index de025d3b4f..edebc30c09 100644
--- a/pom.xml
+++ b/pom.xml
@@ -109,6 +109,7 @@
selenium-junit-testng
solr-fulltext-search
spark-java
+ spring-5
spring-akka
spring-amqp
spring-all
diff --git a/spring-5/pom.xml b/spring-5/pom.xml
index ab05918ae4..eca36cc1d1 100644
--- a/spring-5/pom.xml
+++ b/spring-5/pom.xml
@@ -9,7 +9,7 @@
jar
spring-5
-
+ spring 5 sample project about new features
org.springframework.boot
@@ -67,6 +67,17 @@
org.springframework.boot
spring-boot-maven-plugin
+
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+ 2.19.1
+
+ methods
+ true
+
+
+
diff --git a/spring-5/src/test/java/com/baeldung/Spring5JUnit4ConcurrentIntegrationTest.java b/spring-5/src/test/java/com/baeldung/Spring5JUnit4ConcurrentIntegrationTest.java
new file mode 100644
index 0000000000..938ee7fd43
--- /dev/null
+++ b/spring-5/src/test/java/com/baeldung/Spring5JUnit4ConcurrentIntegrationTest.java
@@ -0,0 +1,57 @@
+package com.baeldung;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.BeansException;
+import org.springframework.beans.factory.InitializingBean;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.ApplicationContextAware;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringRunner;
+
+import java.util.concurrent.TimeUnit;
+
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+/**
+ * @author aiet
+ */
+@RunWith(SpringRunner.class)
+@ContextConfiguration(classes = Spring5JUnit4ConcurrentIntegrationTest.SimpleConfiguration.class)
+public class Spring5JUnit4ConcurrentIntegrationTest implements ApplicationContextAware, InitializingBean {
+
+ @Configuration
+ public static class SimpleConfiguration {
+ }
+
+ private ApplicationContext applicationContext;
+
+ private boolean beanInitialized = false;
+
+ @Override
+ public final void afterPropertiesSet() throws Exception {
+ this.beanInitialized = true;
+ }
+
+ @Override
+ public final void setApplicationContext(final ApplicationContext applicationContext) throws BeansException {
+ this.applicationContext = applicationContext;
+ }
+
+ @Test
+ public final void verifyApplicationContextSet() throws InterruptedException {
+ TimeUnit.SECONDS.sleep(2);
+ assertNotNull("The application context should have been set due to ApplicationContextAware semantics.", this.applicationContext);
+ }
+
+ @Test
+ public final void verifyBeanInitialized() throws InterruptedException {
+ TimeUnit.SECONDS.sleep(2);
+ assertTrue("This test bean should have been initialized due to InitializingBean semantics.", this.beanInitialized);
+ }
+
+}
+
+