diff --git a/handling-spring-static-resources/.classpath b/handling-spring-static-resources/.classpath
index ceb436dc82..71a1c1e0b5 100644
--- a/handling-spring-static-resources/.classpath
+++ b/handling-spring-static-resources/.classpath
@@ -19,11 +19,9 @@
-
-
-
+
-
+
diff --git a/handling-spring-static-resources/.project b/handling-spring-static-resources/.project
index 3d1ebc3a95..a16def8042 100644
--- a/handling-spring-static-resources/.project
+++ b/handling-spring-static-resources/.project
@@ -31,17 +31,18 @@
- org.eclipse.m2e.core.maven2Builder
+ org.hibernate.eclipse.console.hibernateBuilder
- org.hibernate.eclipse.console.hibernateBuilder
+ org.eclipse.m2e.core.maven2Builder
+ org.eclipse.jem.workbench.JavaEMFNature
org.springframework.ide.eclipse.core.springnature
org.eclipse.jdt.core.javanature
org.eclipse.m2e.core.maven2Nature
diff --git a/handling-spring-static-resources/pom.xml b/handling-spring-static-resources/pom.xml
index fb29bf1a3d..2a78e4cc98 100644
--- a/handling-spring-static-resources/pom.xml
+++ b/handling-spring-static-resources/pom.xml
@@ -1,84 +1,91 @@
-
+
4.0.0
org.baeldung
handling-spring-static-resources
handling-spring-static-resources
+ 0.1-SNAPSHOT
war
- 1.0.0-BUILD-SNAPSHOT
-
- 1.7
- 4.1.0.RELEASE
- 3.2.0.RELEASE
- 1.8.1
- 1.6.1
-
- 2.3.2-b01
-
+
+
+
+
+ org.springframework.security
+ spring-security-web
+ ${org.springframework.security.version}
+
+
+ org.springframework.security
+ spring-security-config
+ ${org.springframework.security.version}
+
+
+ org.springframework.security
+ spring-security-taglibs
+ ${org.springframework.security.version}
+
+
org.springframework
- spring-context
- 4.1.0.RELEASE
+ spring-core
+ ${org.springframework.version}
-
- commons-logging
commons-logging
+ commons-logging
org.springframework
- spring-webmvc
- ${org.springframework-version}
-
-
- org.springframework.security
- spring-security-config
- 3.2.5.RELEASE
- runtime
+ spring-context
+ ${org.springframework.version}
org.springframework
- spring-context-support
- 4.1.0.RELEASE
+ spring-jdbc
+ ${org.springframework.version}
-
+
+ org.springframework
+ spring-beans
+ ${org.springframework.version}
+
+
+ org.springframework
+ spring-aop
+ ${org.springframework.version}
+
+
+ org.springframework
+ spring-tx
+ ${org.springframework.version}
+
+
+ org.springframework
+ spring-expression
+ ${org.springframework.version}
+
+
+
+ org.springframework
+ spring-web
+ ${org.springframework.version}
+
+
+ org.springframework
+ spring-webmvc
+ ${org.springframework.version}
+
+
+
org.aspectj
aspectjrt
${org.aspectj-version}
-
-
-
- org.slf4j
- slf4j-api
- ${org.slf4j-version}
-
-
- org.slf4j
- jcl-over-slf4j
- ${org.slf4j-version}
- runtime
-
-
- org.slf4j
- slf4j-log4j12
- ${org.slf4j-version}
- runtime
-
-
- log4j
- log4j
- 1.2.16
- runtime
-
-
-
javax.inject
javax.inject
@@ -101,31 +108,15 @@
jstl
1.2
-
-
- org.springframework.security
- spring-security-taglibs
- 3.2.5.RELEASE
-
-
com.fasterxml.jackson.core
jackson-databind
- 2.4.1
-
-
-
-
-
-
- javax.validation
- validation-api
- 1.0.0.GA
+ ${jackson.version}
org.hibernate
hibernate-validator
- 4.1.0.Final
+ ${hibernate-validator.version}
@@ -141,13 +132,31 @@
handlebars
1.3.2
-
-
- org.springframework.security
- spring-security-web
- ${org.springframework.security-version}
-
+
+
+
+ org.slf4j
+ slf4j-api
+ ${org.slf4j.version}
+
+
+ ch.qos.logback
+ logback-classic
+ ${logback.version}
+
+
+
+ org.slf4j
+ jcl-over-slf4j
+ ${org.slf4j.version}
+
+
+
+ org.slf4j
+ log4j-over-slf4j
+ ${org.slf4j.version}
+
@@ -160,4 +169,54 @@
+
+
+ 1.7
+ 4.1.0.RELEASE
+ 3.2.0.RELEASE
+ 1.8.1
+ 1.6.1
+ 2.3.2-b01
+
+
+ 4.1.1.RELEASE
+ 3.2.5.RELEASE
+
+
+ 4.3.7.Final
+ 5.1.32
+ 1.6.2.RELEASE
+
+
+
+ 2.4.2
+
+
+ 1.7.7
+ 1.1.2
+
+
+ 5.1.3.Final
+
+
+ 18.0
+ 3.3.2
+
+
+ 1.3
+ 4.11
+ 1.10.8
+
+ 4.3.3
+ 4.3.5
+
+ 2.3.4
+
+
+ 3.2
+ 2.5
+ 2.17
+ 1.4.10
+
+
\ No newline at end of file
diff --git a/handling-spring-static-resources/src/main/java/org/baeldung/security/MySimpleUrlAuthenticationSuccessHandler.java b/handling-spring-static-resources/src/main/java/org/baeldung/security/MySimpleUrlAuthenticationSuccessHandler.java
index 45ce91adc8..316642ab6f 100644
--- a/handling-spring-static-resources/src/main/java/org/baeldung/security/MySimpleUrlAuthenticationSuccessHandler.java
+++ b/handling-spring-static-resources/src/main/java/org/baeldung/security/MySimpleUrlAuthenticationSuccessHandler.java
@@ -17,8 +17,7 @@ public class MySimpleUrlAuthenticationSuccessHandler implements AuthenticationSu
private RedirectStrategy redirectStrategy = new DefaultRedirectStrategy();
- @Override
- public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws IOException {
+ public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws IOException {
handle(request, response, authentication);
HttpSession session = request.getSession(false);
if (session != null) {
@@ -39,9 +38,9 @@ public class MySimpleUrlAuthenticationSuccessHandler implements AuthenticationSu
}
protected String determineTargetUrl(Authentication authentication) {
-
- return "/home.html";
-
+
+ return "/home.html";
+
}
protected void clearAuthenticationAttributes(HttpServletRequest request) {
diff --git a/handling-spring-static-resources/src/main/java/org/baeldung/spring/MvcConfig.java b/handling-spring-static-resources/src/main/java/org/baeldung/spring/MvcConfig.java
index bd874a6e67..4a198cf195 100644
--- a/handling-spring-static-resources/src/main/java/org/baeldung/spring/MvcConfig.java
+++ b/handling-spring-static-resources/src/main/java/org/baeldung/spring/MvcConfig.java
@@ -1,9 +1,7 @@
package org.baeldung.spring;
-
import java.util.Locale;
-
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.MessageSource;
import org.springframework.context.annotation.Bean;
@@ -42,9 +40,9 @@ public class MvcConfig extends WebMvcConfigurerAdapter {
@Override
public void addViewControllers(final ViewControllerRegistry registry) {
super.addViewControllers(registry);
- registry.addViewController("/login.html");
+ registry.addViewController("/login.html");
registry.addViewController("/home.html");
-
+
}
@Bean
@@ -55,23 +53,21 @@ public class MvcConfig extends WebMvcConfigurerAdapter {
bean.setSuffix(".jsp");
return bean;
}
-
+
@Override
- public void addResourceHandlers(ResourceHandlerRegistry registry) {
- //For examples using Spring 4.1.0
- if((env.getProperty("resource.handler.conf")).equals("4.1.0")){
+ public void addResourceHandlers(ResourceHandlerRegistry registry) {
+ // For examples using Spring 4.1.0
+ if ((env.getProperty("resource.handler.conf")).equals("4.1.0")) {
registry.addResourceHandler("/js/**").addResourceLocations("/js/").setCachePeriod(3600).resourceChain(true).addResolver(new GzipResourceResolver()).addResolver(new PathResourceResolver());
registry.addResourceHandler("/resources/**").addResourceLocations("/resources/", "classpath:/other-resources/").setCachePeriod(3600).resourceChain(true).addResolver(new PathResourceResolver());
registry.addResourceHandler("/files/**").addResourceLocations("file:/Users/Elena/").setCachePeriod(3600).resourceChain(true).addResolver(new PathResourceResolver());
- registry.addResourceHandler("/other-files/**").addResourceLocations("file:/Users/Elena/").
- setCachePeriod(3600).resourceChain(true).addResolver(new GzipResourceResolver());
- }
- //For examples using Spring 4.0.7
- else if ((env.getProperty("resource.handler.conf")).equals("4.0.7")){
+ registry.addResourceHandler("/other-files/**").addResourceLocations("file:/Users/Elena/").setCachePeriod(3600).resourceChain(true).addResolver(new GzipResourceResolver());
+ }
+ // For examples using Spring 4.0.7
+ else if ((env.getProperty("resource.handler.conf")).equals("4.0.7")) {
registry.addResourceHandler("/resources/**").addResourceLocations("/", "/resources/", "classpath:/other-resources/");
- registry.addResourceHandler("/files/**")
- .addResourceLocations("file:/Users/Elena/");
-
+ registry.addResourceHandler("/files/**").addResourceLocations("file:/Users/Elena/");
+
}
}
diff --git a/handling-spring-static-resources/src/main/java/org/baeldung/spring/SecSecurityConfig.java b/handling-spring-static-resources/src/main/java/org/baeldung/spring/SecSecurityConfig.java
index d51d0e9a50..4da114c78b 100644
--- a/handling-spring-static-resources/src/main/java/org/baeldung/spring/SecSecurityConfig.java
+++ b/handling-spring-static-resources/src/main/java/org/baeldung/spring/SecSecurityConfig.java
@@ -7,7 +7,7 @@ import org.springframework.context.annotation.ImportResource;
@ImportResource({ "classpath:webSecurityConfig.xml" })
public class SecSecurityConfig {
- public SecSecurityConfig() {
+ public SecSecurityConfig() {
super();
}
diff --git a/handling-spring-static-resources/src/main/java/org/baeldung/web/controller/HomeController.java b/handling-spring-static-resources/src/main/java/org/baeldung/web/controller/HomeController.java
index aa2b9f63fc..44645a1471 100644
--- a/handling-spring-static-resources/src/main/java/org/baeldung/web/controller/HomeController.java
+++ b/handling-spring-static-resources/src/main/java/org/baeldung/web/controller/HomeController.java
@@ -14,22 +14,19 @@ import org.springframework.web.context.request.WebRequest;
@Controller
public class HomeController {
-
-
-
+
@Autowired
Environment env;
-
@RequestMapping(value = "/home", method = RequestMethod.GET)
public String showHome(WebRequest request, Model model, Locale locale) throws IOException {
-
+
Date date = new Date();
DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, locale);
-
+
String formattedDate = dateFormat.format(date);
- model.addAttribute("serverTime", formattedDate );
+ model.addAttribute("serverTime", formattedDate);
return "home";
}
-
+
}
diff --git a/spring-all/src/main/java/org/baeldung/profiles/DatasourceConfig.java b/spring-all/src/main/java/org/baeldung/profiles/DatasourceConfig.java
new file mode 100644
index 0000000000..80cb060c7e
--- /dev/null
+++ b/spring-all/src/main/java/org/baeldung/profiles/DatasourceConfig.java
@@ -0,0 +1,5 @@
+package org.baeldung.profiles;
+
+public interface DatasourceConfig {
+ public void setup();
+}
diff --git a/spring-all/src/main/java/org/baeldung/profiles/DevDatasourceConfig.java b/spring-all/src/main/java/org/baeldung/profiles/DevDatasourceConfig.java
new file mode 100644
index 0000000000..e357280c43
--- /dev/null
+++ b/spring-all/src/main/java/org/baeldung/profiles/DevDatasourceConfig.java
@@ -0,0 +1,15 @@
+package org.baeldung.profiles;
+
+import org.springframework.context.annotation.Profile;
+import org.springframework.stereotype.Component;
+
+@Component
+@Profile("dev")
+public class DevDatasourceConfig implements DatasourceConfig {
+
+ @Override
+ public void setup() {
+ System.out.println("Setting up datasource for DEV environment. ");
+ }
+
+}
diff --git a/spring-all/src/main/java/org/baeldung/profiles/ProductionDatasourceConfig.java b/spring-all/src/main/java/org/baeldung/profiles/ProductionDatasourceConfig.java
new file mode 100644
index 0000000000..f1adff9c96
--- /dev/null
+++ b/spring-all/src/main/java/org/baeldung/profiles/ProductionDatasourceConfig.java
@@ -0,0 +1,15 @@
+package org.baeldung.profiles;
+
+import org.springframework.context.annotation.Profile;
+import org.springframework.stereotype.Component;
+
+@Component
+@Profile("production")
+public class ProductionDatasourceConfig implements DatasourceConfig {
+
+ @Override
+ public void setup() {
+ System.out.println("Setting up datasource for PRODUCTION environment. ");
+ }
+
+}
diff --git a/spring-all/src/main/java/org/baeldung/profiles/SpringProfilesConfig.java b/spring-all/src/main/java/org/baeldung/profiles/SpringProfilesConfig.java
new file mode 100644
index 0000000000..eb5543e3db
--- /dev/null
+++ b/spring-all/src/main/java/org/baeldung/profiles/SpringProfilesConfig.java
@@ -0,0 +1,10 @@
+package org.baeldung.profiles;
+
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+@ComponentScan("org.baeldung.profiles")
+public class SpringProfilesConfig {
+
+}
diff --git a/spring-all/src/main/java/org/baeldung/springevents/asynchronous/AsynchronousSpringEventsConfig.java b/spring-all/src/main/java/org/baeldung/springevents/asynchronous/AsynchronousSpringEventsConfig.java
new file mode 100644
index 0000000000..082a986974
--- /dev/null
+++ b/spring-all/src/main/java/org/baeldung/springevents/asynchronous/AsynchronousSpringEventsConfig.java
@@ -0,0 +1,21 @@
+package org.baeldung.springevents.asynchronous;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.event.ApplicationEventMulticaster;
+import org.springframework.context.event.SimpleApplicationEventMulticaster;
+import org.springframework.core.task.SimpleAsyncTaskExecutor;
+
+@Configuration
+@ComponentScan("org.baeldung.springevents.synchronous")
+public class AsynchronousSpringEventsConfig {
+
+ @Bean(name = "applicationEventMulticaster")
+ public ApplicationEventMulticaster simpleApplicationEventMulticaster() {
+ final SimpleApplicationEventMulticaster simpleApplicationEventMulticaster = new SimpleApplicationEventMulticaster();
+ simpleApplicationEventMulticaster.setTaskExecutor(new SimpleAsyncTaskExecutor());
+ return simpleApplicationEventMulticaster;
+ }
+
+}
diff --git a/spring-all/src/main/java/org/baeldung/springevents/synchronous/ContextRefreshedListener.java b/spring-all/src/main/java/org/baeldung/springevents/synchronous/ContextRefreshedListener.java
new file mode 100644
index 0000000000..052437e555
--- /dev/null
+++ b/spring-all/src/main/java/org/baeldung/springevents/synchronous/ContextRefreshedListener.java
@@ -0,0 +1,15 @@
+package org.baeldung.springevents.synchronous;
+
+import org.springframework.context.ApplicationListener;
+import org.springframework.context.event.ContextRefreshedEvent;
+import org.springframework.stereotype.Component;
+
+@Component
+public class ContextRefreshedListener implements ApplicationListener {
+
+ @Override
+ public void onApplicationEvent(final ContextRefreshedEvent cse) {
+ System.out.println("Handling context re-freshed event. ");
+ }
+
+}
\ No newline at end of file
diff --git a/spring-all/src/main/java/org/baeldung/springevents/synchronous/CustomSpringEvent.java b/spring-all/src/main/java/org/baeldung/springevents/synchronous/CustomSpringEvent.java
new file mode 100644
index 0000000000..1631801ffe
--- /dev/null
+++ b/spring-all/src/main/java/org/baeldung/springevents/synchronous/CustomSpringEvent.java
@@ -0,0 +1,19 @@
+package org.baeldung.springevents.synchronous;
+
+import org.springframework.context.ApplicationEvent;
+
+public class CustomSpringEvent extends ApplicationEvent {
+ private static final long serialVersionUID = -8053143381029977953L;
+
+ private String message;
+
+ public CustomSpringEvent(final Object source, final String message) {
+ super(source);
+ this.message = message;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+}
diff --git a/spring-all/src/main/java/org/baeldung/springevents/synchronous/CustomSpringEventListener.java b/spring-all/src/main/java/org/baeldung/springevents/synchronous/CustomSpringEventListener.java
new file mode 100644
index 0000000000..69f96966ec
--- /dev/null
+++ b/spring-all/src/main/java/org/baeldung/springevents/synchronous/CustomSpringEventListener.java
@@ -0,0 +1,14 @@
+package org.baeldung.springevents.synchronous;
+
+import org.springframework.context.ApplicationListener;
+import org.springframework.stereotype.Component;
+
+@Component
+public class CustomSpringEventListener implements ApplicationListener {
+
+ @Override
+ public void onApplicationEvent(final CustomSpringEvent event) {
+ System.out.println("Received spring custom event - " + event.getMessage());
+ }
+
+}
\ No newline at end of file
diff --git a/spring-all/src/main/java/org/baeldung/springevents/synchronous/CustomSpringEventPublisher.java b/spring-all/src/main/java/org/baeldung/springevents/synchronous/CustomSpringEventPublisher.java
new file mode 100644
index 0000000000..4569de1d5e
--- /dev/null
+++ b/spring-all/src/main/java/org/baeldung/springevents/synchronous/CustomSpringEventPublisher.java
@@ -0,0 +1,19 @@
+package org.baeldung.springevents.synchronous;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.ApplicationEventPublisher;
+import org.springframework.stereotype.Component;
+
+@Component
+public class CustomSpringEventPublisher {
+
+ @Autowired
+ private ApplicationEventPublisher applicationEventPublisher;
+
+ public void publishEvent(final String message) {
+ System.out.println("Publishing custom event. ");
+ final CustomSpringEvent customSpringEvent = new CustomSpringEvent(this, message);
+ applicationEventPublisher.publishEvent(customSpringEvent);
+ }
+
+}
diff --git a/spring-all/src/main/java/org/baeldung/springevents/synchronous/SynchronousSpringEventsConfig.java b/spring-all/src/main/java/org/baeldung/springevents/synchronous/SynchronousSpringEventsConfig.java
new file mode 100644
index 0000000000..fff8a7e4b5
--- /dev/null
+++ b/spring-all/src/main/java/org/baeldung/springevents/synchronous/SynchronousSpringEventsConfig.java
@@ -0,0 +1,10 @@
+package org.baeldung.springevents.synchronous;
+
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+@ComponentScan("org.baeldung.springevents.synchronous")
+public class SynchronousSpringEventsConfig {
+
+}
diff --git a/spring-all/src/main/resources/springProfiles-config.xml b/spring-all/src/main/resources/springProfiles-config.xml
new file mode 100644
index 0000000000..a290f83b26
--- /dev/null
+++ b/spring-all/src/main/resources/springProfiles-config.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/spring-all/src/test/java/org/baeldung/profiles/DevProfileWithAnnotationTest.java b/spring-all/src/test/java/org/baeldung/profiles/DevProfileWithAnnotationTest.java
new file mode 100644
index 0000000000..2b65928da8
--- /dev/null
+++ b/spring-all/src/test/java/org/baeldung/profiles/DevProfileWithAnnotationTest.java
@@ -0,0 +1,23 @@
+package org.baeldung.profiles;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.test.context.ActiveProfiles;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+import org.springframework.test.context.support.AnnotationConfigContextLoader;
+
+@RunWith(SpringJUnit4ClassRunner.class)
+@ActiveProfiles("dev")
+@ContextConfiguration(classes = { SpringProfilesConfig.class }, loader = AnnotationConfigContextLoader.class)
+public class DevProfileWithAnnotationTest {
+ @Autowired
+ DatasourceConfig datasourceConfig;
+
+ @Test
+ public void testSpringProfiles() {
+ Assert.assertTrue(datasourceConfig instanceof DevDatasourceConfig);
+ }
+}
\ No newline at end of file
diff --git a/spring-all/src/test/java/org/baeldung/profiles/ProductionProfileWithAnnotationTest.java b/spring-all/src/test/java/org/baeldung/profiles/ProductionProfileWithAnnotationTest.java
new file mode 100644
index 0000000000..551636bd31
--- /dev/null
+++ b/spring-all/src/test/java/org/baeldung/profiles/ProductionProfileWithAnnotationTest.java
@@ -0,0 +1,32 @@
+package org.baeldung.profiles;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.core.env.Environment;
+import org.springframework.test.context.ActiveProfiles;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+import org.springframework.test.context.support.AnnotationConfigContextLoader;
+
+@RunWith(SpringJUnit4ClassRunner.class)
+@ActiveProfiles("production")
+@ContextConfiguration(classes = { SpringProfilesConfig.class }, loader = AnnotationConfigContextLoader.class)
+public class ProductionProfileWithAnnotationTest {
+
+ @Autowired
+ DatasourceConfig datasourceConfig;
+
+ @Autowired
+ Environment environment;
+
+ @Test
+ public void testSpringProfiles() {
+ for (final String profileName : environment.getActiveProfiles()) {
+ System.out.println("Currently active profile - " + profileName);
+ }
+ Assert.assertEquals("production", environment.getActiveProfiles()[0]);
+ Assert.assertTrue(datasourceConfig instanceof ProductionDatasourceConfig);
+ }
+}
\ No newline at end of file
diff --git a/spring-all/src/test/java/org/baeldung/profiles/SpringProfilesWithXMLTest.java b/spring-all/src/test/java/org/baeldung/profiles/SpringProfilesWithXMLTest.java
new file mode 100644
index 0000000000..15c9265a13
--- /dev/null
+++ b/spring-all/src/test/java/org/baeldung/profiles/SpringProfilesWithXMLTest.java
@@ -0,0 +1,33 @@
+package org.baeldung.profiles;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
+import org.springframework.core.env.ConfigurableEnvironment;
+
+public class SpringProfilesWithXMLTest {
+
+ private ClassPathXmlApplicationContext classPathXmlApplicationContext;
+
+ @Test
+ public void testSpringProfilesForDevEnvironment() {
+ classPathXmlApplicationContext = new ClassPathXmlApplicationContext("classpath:springProfiles-config.xml");
+ final ConfigurableEnvironment configurableEnvironment = classPathXmlApplicationContext.getEnvironment();
+ configurableEnvironment.setActiveProfiles("dev");
+ classPathXmlApplicationContext.refresh();
+ final DatasourceConfig datasourceConfig = classPathXmlApplicationContext.getBean("devDatasourceConfig", DatasourceConfig.class);
+
+ Assert.assertTrue(datasourceConfig instanceof DevDatasourceConfig);
+ }
+
+ @Test
+ public void testSpringProfilesForProdEnvironment() {
+ classPathXmlApplicationContext = new ClassPathXmlApplicationContext("classpath:springProfiles-config.xml");
+ final ConfigurableEnvironment configurableEnvironment = classPathXmlApplicationContext.getEnvironment();
+ configurableEnvironment.setActiveProfiles("production");
+ classPathXmlApplicationContext.refresh();
+ final DatasourceConfig datasourceConfig = classPathXmlApplicationContext.getBean("productionDatasourceConfig", DatasourceConfig.class);
+
+ Assert.assertTrue(datasourceConfig instanceof ProductionDatasourceConfig);
+ }
+}
diff --git a/spring-all/src/test/java/org/baeldung/springevents/asynchronous/AsynchronousCustomSpringEventsTest.java b/spring-all/src/test/java/org/baeldung/springevents/asynchronous/AsynchronousCustomSpringEventsTest.java
new file mode 100644
index 0000000000..2b45ae4e68
--- /dev/null
+++ b/spring-all/src/test/java/org/baeldung/springevents/asynchronous/AsynchronousCustomSpringEventsTest.java
@@ -0,0 +1,23 @@
+package org.baeldung.springevents.asynchronous;
+
+import org.baeldung.springevents.synchronous.CustomSpringEventPublisher;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+import org.springframework.test.context.support.AnnotationConfigContextLoader;
+
+@RunWith(SpringJUnit4ClassRunner.class)
+@ContextConfiguration(classes = { AsynchronousSpringEventsConfig.class }, loader = AnnotationConfigContextLoader.class)
+public class AsynchronousCustomSpringEventsTest {
+
+ @Autowired
+ private CustomSpringEventPublisher publisher;
+
+ @Test
+ public void testCustomSpringEvents() throws InterruptedException {
+ publisher.publishEvent("Hello world!!");
+ System.out.println("Done publishing asynchronous custom event. ");
+ }
+}
diff --git a/spring-all/src/test/java/org/baeldung/springevents/synchronous/ContextRefreshedListenerTest.java b/spring-all/src/test/java/org/baeldung/springevents/synchronous/ContextRefreshedListenerTest.java
new file mode 100644
index 0000000000..d971698e3f
--- /dev/null
+++ b/spring-all/src/test/java/org/baeldung/springevents/synchronous/ContextRefreshedListenerTest.java
@@ -0,0 +1,18 @@
+package org.baeldung.springevents.synchronous;
+
+import org.baeldung.springevents.synchronous.SynchronousSpringEventsConfig;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+import org.springframework.test.context.support.AnnotationConfigContextLoader;
+
+@RunWith(SpringJUnit4ClassRunner.class)
+@ContextConfiguration(classes = { SynchronousSpringEventsConfig.class }, loader = AnnotationConfigContextLoader.class)
+public class ContextRefreshedListenerTest {
+
+ @Test
+ public void testContextRefreshedListener() throws InterruptedException {
+ System.out.println("Test context re-freshed listener.");
+ }
+}
\ No newline at end of file
diff --git a/spring-all/src/test/java/org/baeldung/springevents/synchronous/SynchronousCustomSpringEventsTest.java b/spring-all/src/test/java/org/baeldung/springevents/synchronous/SynchronousCustomSpringEventsTest.java
new file mode 100644
index 0000000000..b559ca9fc9
--- /dev/null
+++ b/spring-all/src/test/java/org/baeldung/springevents/synchronous/SynchronousCustomSpringEventsTest.java
@@ -0,0 +1,22 @@
+package org.baeldung.springevents.synchronous;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+import org.springframework.test.context.support.AnnotationConfigContextLoader;
+
+@RunWith(SpringJUnit4ClassRunner.class)
+@ContextConfiguration(classes = { SynchronousSpringEventsConfig.class }, loader = AnnotationConfigContextLoader.class)
+public class SynchronousCustomSpringEventsTest {
+
+ @Autowired
+ private CustomSpringEventPublisher publisher;
+
+ @Test
+ public void testCustomSpringEvents() throws InterruptedException {
+ publisher.publishEvent("Hello world!!");
+ System.out.println("Done publishing synchronous custom event. ");
+ }
+}