From f755fce0bb765b46fbadcab4b0fe79a698cccab6 Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Sat, 13 Aug 2016 13:12:57 +0200 Subject: [PATCH 01/10] Initial classes --- .../baeldung/profiles/DatasourceConfig.java | 2 +- .../startup/InitializingBeanExampleBean.java | 12 +++++++++ .../LogicInConstructorExampleBean.java | 18 +++++++++++++ ...StartupApplicationListenerExampleBean.java | 4 +++ .../startup/PostConstructExampleBean.java | 15 +++++++++++ .../baeldung/startup/SpringStartupConfig.java | 10 ++++++++ .../baeldung/startup/SpringStartupTest.java | 25 +++++++++++++++++++ 7 files changed, 85 insertions(+), 1 deletion(-) create mode 100644 spring-all/src/main/java/org/baeldung/startup/InitializingBeanExampleBean.java create mode 100644 spring-all/src/main/java/org/baeldung/startup/LogicInConstructorExampleBean.java create mode 100644 spring-all/src/main/java/org/baeldung/startup/OnStartupApplicationListenerExampleBean.java create mode 100644 spring-all/src/main/java/org/baeldung/startup/PostConstructExampleBean.java create mode 100644 spring-all/src/main/java/org/baeldung/startup/SpringStartupConfig.java create mode 100644 spring-all/src/test/java/org/baeldung/startup/SpringStartupTest.java diff --git a/spring-all/src/main/java/org/baeldung/profiles/DatasourceConfig.java b/spring-all/src/main/java/org/baeldung/profiles/DatasourceConfig.java index 80cb060c7e..8fde925fd8 100644 --- a/spring-all/src/main/java/org/baeldung/profiles/DatasourceConfig.java +++ b/spring-all/src/main/java/org/baeldung/profiles/DatasourceConfig.java @@ -1,5 +1,5 @@ package org.baeldung.profiles; public interface DatasourceConfig { - public void setup(); + void setup(); } diff --git a/spring-all/src/main/java/org/baeldung/startup/InitializingBeanExampleBean.java b/spring-all/src/main/java/org/baeldung/startup/InitializingBeanExampleBean.java new file mode 100644 index 0000000000..431307b81a --- /dev/null +++ b/spring-all/src/main/java/org/baeldung/startup/InitializingBeanExampleBean.java @@ -0,0 +1,12 @@ +package org.baeldung.startup; + +import org.springframework.beans.factory.InitializingBean; +import org.springframework.context.annotation.Scope; + +@Scope(value = "prototype") +public class InitializingBeanExampleBean implements InitializingBean { + + @Override + public void afterPropertiesSet() throws Exception { + } +} diff --git a/spring-all/src/main/java/org/baeldung/startup/LogicInConstructorExampleBean.java b/spring-all/src/main/java/org/baeldung/startup/LogicInConstructorExampleBean.java new file mode 100644 index 0000000000..410eb3b061 --- /dev/null +++ b/spring-all/src/main/java/org/baeldung/startup/LogicInConstructorExampleBean.java @@ -0,0 +1,18 @@ +package org.baeldung.startup; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Scope; +import org.springframework.core.env.Environment; +import org.springframework.stereotype.Component; + +@Component +@Scope(value = "prototype") +public class LogicInConstructorExampleBean { + + @Autowired + private Environment environment; + + public LogicInConstructorExampleBean() { + environment.getActiveProfiles(); + } +} diff --git a/spring-all/src/main/java/org/baeldung/startup/OnStartupApplicationListenerExampleBean.java b/spring-all/src/main/java/org/baeldung/startup/OnStartupApplicationListenerExampleBean.java new file mode 100644 index 0000000000..259b468890 --- /dev/null +++ b/spring-all/src/main/java/org/baeldung/startup/OnStartupApplicationListenerExampleBean.java @@ -0,0 +1,4 @@ +package org.baeldung.startup; + +public class OnStartupApplicationListenerExampleBean { +} diff --git a/spring-all/src/main/java/org/baeldung/startup/PostConstructExampleBean.java b/spring-all/src/main/java/org/baeldung/startup/PostConstructExampleBean.java new file mode 100644 index 0000000000..3f7cb5e7d2 --- /dev/null +++ b/spring-all/src/main/java/org/baeldung/startup/PostConstructExampleBean.java @@ -0,0 +1,15 @@ +package org.baeldung.startup; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.env.Environment; +import org.springframework.stereotype.Component; + +@Component +public class PostConstructExampleBean { + + @Autowired + private Environment environment; + + public PostConstructExampleBean() { + } +} diff --git a/spring-all/src/main/java/org/baeldung/startup/SpringStartupConfig.java b/spring-all/src/main/java/org/baeldung/startup/SpringStartupConfig.java new file mode 100644 index 0000000000..b7874af28c --- /dev/null +++ b/spring-all/src/main/java/org/baeldung/startup/SpringStartupConfig.java @@ -0,0 +1,10 @@ +package org.baeldung.startup; + +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; + +@Configuration +@ComponentScan("org.baeldung.startup") +public class SpringStartupConfig { + +} \ No newline at end of file diff --git a/spring-all/src/test/java/org/baeldung/startup/SpringStartupTest.java b/spring-all/src/test/java/org/baeldung/startup/SpringStartupTest.java new file mode 100644 index 0000000000..2f6ce1b5ea --- /dev/null +++ b/spring-all/src/test/java/org/baeldung/startup/SpringStartupTest.java @@ -0,0 +1,25 @@ +package org.baeldung.startup; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.BeanCreationException; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.ApplicationContext; +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 = { SpringStartupConfig.class }, loader = AnnotationConfigContextLoader.class) +public class SpringStartupTest { + + @Autowired + private ApplicationContext ctx; + + @Test(expected = BeanCreationException.class) + public void whenInstantiating_shouldThrowNPE() throws Exception { + ctx.getBean(LogicInConstructorExampleBean.class); + } + + +} \ No newline at end of file From cd2ee40c061b50c118f1a26c713df4b853e6ee62 Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Sat, 13 Aug 2016 13:20:45 +0200 Subject: [PATCH 02/10] Use scope prototype --- .../java/org/baeldung/startup/InitializingBeanExampleBean.java | 2 ++ .../java/org/baeldung/startup/PostConstructExampleBean.java | 2 ++ 2 files changed, 4 insertions(+) diff --git a/spring-all/src/main/java/org/baeldung/startup/InitializingBeanExampleBean.java b/spring-all/src/main/java/org/baeldung/startup/InitializingBeanExampleBean.java index 431307b81a..c766238006 100644 --- a/spring-all/src/main/java/org/baeldung/startup/InitializingBeanExampleBean.java +++ b/spring-all/src/main/java/org/baeldung/startup/InitializingBeanExampleBean.java @@ -2,7 +2,9 @@ package org.baeldung.startup; import org.springframework.beans.factory.InitializingBean; import org.springframework.context.annotation.Scope; +import org.springframework.stereotype.Component; +@Component @Scope(value = "prototype") public class InitializingBeanExampleBean implements InitializingBean { diff --git a/spring-all/src/main/java/org/baeldung/startup/PostConstructExampleBean.java b/spring-all/src/main/java/org/baeldung/startup/PostConstructExampleBean.java index 3f7cb5e7d2..785eab39c3 100644 --- a/spring-all/src/main/java/org/baeldung/startup/PostConstructExampleBean.java +++ b/spring-all/src/main/java/org/baeldung/startup/PostConstructExampleBean.java @@ -1,10 +1,12 @@ package org.baeldung.startup; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Scope; import org.springframework.core.env.Environment; import org.springframework.stereotype.Component; @Component +@Scope(value = "prototype") public class PostConstructExampleBean { @Autowired From bec20baad046e69ff5d5a2b920c7e0b4b9120b85 Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Sat, 13 Aug 2016 13:32:04 +0200 Subject: [PATCH 03/10] Add examples --- .../org/baeldung/async/AsyncComponent.java | 6 +++--- .../startup/InitializingBeanExampleBean.java | 9 +++++++++ .../startup/InvalidInitExampleBean.java | 18 ++++++++++++++++++ .../startup/LogicInConstructorExampleBean.java | 13 +++++++++---- .../startup/PostConstructExampleBean.java | 9 ++++++++- .../baeldung/startup/SpringStartupConfig.java | 1 - .../baeldung/startup/SpringStartupTest.java | 17 +++++++++++++++-- 7 files changed, 62 insertions(+), 11 deletions(-) create mode 100644 spring-all/src/main/java/org/baeldung/startup/InvalidInitExampleBean.java diff --git a/spring-all/src/main/java/org/baeldung/async/AsyncComponent.java b/spring-all/src/main/java/org/baeldung/async/AsyncComponent.java index 2946ab0aa1..8503f75c8f 100644 --- a/spring-all/src/main/java/org/baeldung/async/AsyncComponent.java +++ b/spring-all/src/main/java/org/baeldung/async/AsyncComponent.java @@ -1,11 +1,11 @@ package org.baeldung.async; -import java.util.concurrent.Future; - import org.springframework.scheduling.annotation.Async; import org.springframework.scheduling.annotation.AsyncResult; import org.springframework.stereotype.Component; +import java.util.concurrent.Future; + @Component public class AsyncComponent { @@ -19,7 +19,7 @@ public class AsyncComponent { System.out.println("Execute method asynchronously " + Thread.currentThread().getName()); try { Thread.sleep(5000); - return new AsyncResult("hello world !!!!"); + return new AsyncResult<>("hello world !!!!"); } catch (final InterruptedException e) { } diff --git a/spring-all/src/main/java/org/baeldung/startup/InitializingBeanExampleBean.java b/spring-all/src/main/java/org/baeldung/startup/InitializingBeanExampleBean.java index c766238006..8d4f04e1ad 100644 --- a/spring-all/src/main/java/org/baeldung/startup/InitializingBeanExampleBean.java +++ b/spring-all/src/main/java/org/baeldung/startup/InitializingBeanExampleBean.java @@ -1,14 +1,23 @@ package org.baeldung.startup; +import org.apache.log4j.Logger; import org.springframework.beans.factory.InitializingBean; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Scope; +import org.springframework.core.env.Environment; import org.springframework.stereotype.Component; @Component @Scope(value = "prototype") public class InitializingBeanExampleBean implements InitializingBean { + private static final Logger LOG = Logger.getLogger(InitializingBeanExampleBean.class); + + @Autowired + private Environment environment; + @Override public void afterPropertiesSet() throws Exception { + LOG.info(environment); } } diff --git a/spring-all/src/main/java/org/baeldung/startup/InvalidInitExampleBean.java b/spring-all/src/main/java/org/baeldung/startup/InvalidInitExampleBean.java new file mode 100644 index 0000000000..0b9c6f0c7d --- /dev/null +++ b/spring-all/src/main/java/org/baeldung/startup/InvalidInitExampleBean.java @@ -0,0 +1,18 @@ +package org.baeldung.startup; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Scope; +import org.springframework.core.env.Environment; +import org.springframework.stereotype.Component; + +@Component +@Scope("prototype") +public class InvalidInitExampleBean { + + @Autowired + private Environment environment; + + public InvalidInitExampleBean() { + environment.getActiveProfiles(); + } +} diff --git a/spring-all/src/main/java/org/baeldung/startup/LogicInConstructorExampleBean.java b/spring-all/src/main/java/org/baeldung/startup/LogicInConstructorExampleBean.java index 410eb3b061..3cef105c3c 100644 --- a/spring-all/src/main/java/org/baeldung/startup/LogicInConstructorExampleBean.java +++ b/spring-all/src/main/java/org/baeldung/startup/LogicInConstructorExampleBean.java @@ -1,5 +1,6 @@ package org.baeldung.startup; +import org.apache.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Scope; import org.springframework.core.env.Environment; @@ -9,10 +10,14 @@ import org.springframework.stereotype.Component; @Scope(value = "prototype") public class LogicInConstructorExampleBean { - @Autowired - private Environment environment; + private static final Logger LOG = Logger.getLogger(LogicInConstructorExampleBean.class); - public LogicInConstructorExampleBean() { - environment.getActiveProfiles(); + private final Environment environment; + + @Autowired + public LogicInConstructorExampleBean(Environment environment) { + this.environment = environment; + + LOG.info(environment); } } diff --git a/spring-all/src/main/java/org/baeldung/startup/PostConstructExampleBean.java b/spring-all/src/main/java/org/baeldung/startup/PostConstructExampleBean.java index 785eab39c3..be21aef70c 100644 --- a/spring-all/src/main/java/org/baeldung/startup/PostConstructExampleBean.java +++ b/spring-all/src/main/java/org/baeldung/startup/PostConstructExampleBean.java @@ -1,17 +1,24 @@ package org.baeldung.startup; +import org.apache.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Scope; import org.springframework.core.env.Environment; import org.springframework.stereotype.Component; +import javax.annotation.PostConstruct; + @Component @Scope(value = "prototype") public class PostConstructExampleBean { + private static final Logger LOG = Logger.getLogger(PostConstructExampleBean.class); + @Autowired private Environment environment; - public PostConstructExampleBean() { + @PostConstruct + public void init() { + LOG.info(environment); } } diff --git a/spring-all/src/main/java/org/baeldung/startup/SpringStartupConfig.java b/spring-all/src/main/java/org/baeldung/startup/SpringStartupConfig.java index b7874af28c..12854e1be5 100644 --- a/spring-all/src/main/java/org/baeldung/startup/SpringStartupConfig.java +++ b/spring-all/src/main/java/org/baeldung/startup/SpringStartupConfig.java @@ -6,5 +6,4 @@ import org.springframework.context.annotation.Configuration; @Configuration @ComponentScan("org.baeldung.startup") public class SpringStartupConfig { - } \ No newline at end of file diff --git a/spring-all/src/test/java/org/baeldung/startup/SpringStartupTest.java b/spring-all/src/test/java/org/baeldung/startup/SpringStartupTest.java index 2f6ce1b5ea..1e76fd8746 100644 --- a/spring-all/src/test/java/org/baeldung/startup/SpringStartupTest.java +++ b/spring-all/src/test/java/org/baeldung/startup/SpringStartupTest.java @@ -17,9 +17,22 @@ public class SpringStartupTest { private ApplicationContext ctx; @Test(expected = BeanCreationException.class) - public void whenInstantiating_shouldThrowNPE() throws Exception { + public void whenInstantiating_shouldThrowBCE() throws Exception { + ctx.getBean(InvalidInitExampleBean.class); + } + + @Test + public void whenPostConstruct_shouldLogEnv() throws Exception { + ctx.getBean(PostConstructExampleBean.class); + } + + @Test + public void whenConstructorInjection_shouldLogEnv() throws Exception { ctx.getBean(LogicInConstructorExampleBean.class); } - + @Test + public void whenInitializingBean_shouldLogEnv() throws Exception { + ctx.getBean(InitializingBeanExampleBean.class); + } } \ No newline at end of file From 2153e6d1a5370ad4d8823ef805fa0cc6f59a628d Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Sat, 13 Aug 2016 13:38:24 +0200 Subject: [PATCH 04/10] Remove ApplicationListenerBean --- .../startup/OnStartupApplicationListenerExampleBean.java | 4 ---- 1 file changed, 4 deletions(-) delete mode 100644 spring-all/src/main/java/org/baeldung/startup/OnStartupApplicationListenerExampleBean.java diff --git a/spring-all/src/main/java/org/baeldung/startup/OnStartupApplicationListenerExampleBean.java b/spring-all/src/main/java/org/baeldung/startup/OnStartupApplicationListenerExampleBean.java deleted file mode 100644 index 259b468890..0000000000 --- a/spring-all/src/main/java/org/baeldung/startup/OnStartupApplicationListenerExampleBean.java +++ /dev/null @@ -1,4 +0,0 @@ -package org.baeldung.startup; - -public class OnStartupApplicationListenerExampleBean { -} From 28f1fe27e2359cb4b2f8dbf36f57eacfb25b98d0 Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Sat, 13 Aug 2016 13:41:55 +0200 Subject: [PATCH 05/10] Modify logging --- .../org/baeldung/startup/InitializingBeanExampleBean.java | 4 +++- .../org/baeldung/startup/LogicInConstructorExampleBean.java | 4 +++- .../java/org/baeldung/startup/PostConstructExampleBean.java | 3 ++- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/spring-all/src/main/java/org/baeldung/startup/InitializingBeanExampleBean.java b/spring-all/src/main/java/org/baeldung/startup/InitializingBeanExampleBean.java index 8d4f04e1ad..33b14864f3 100644 --- a/spring-all/src/main/java/org/baeldung/startup/InitializingBeanExampleBean.java +++ b/spring-all/src/main/java/org/baeldung/startup/InitializingBeanExampleBean.java @@ -7,6 +7,8 @@ import org.springframework.context.annotation.Scope; import org.springframework.core.env.Environment; import org.springframework.stereotype.Component; +import java.util.Arrays; + @Component @Scope(value = "prototype") public class InitializingBeanExampleBean implements InitializingBean { @@ -18,6 +20,6 @@ public class InitializingBeanExampleBean implements InitializingBean { @Override public void afterPropertiesSet() throws Exception { - LOG.info(environment); + LOG.info(Arrays.asList(environment.getDefaultProfiles())); } } diff --git a/spring-all/src/main/java/org/baeldung/startup/LogicInConstructorExampleBean.java b/spring-all/src/main/java/org/baeldung/startup/LogicInConstructorExampleBean.java index 3cef105c3c..2a7b3e26c7 100644 --- a/spring-all/src/main/java/org/baeldung/startup/LogicInConstructorExampleBean.java +++ b/spring-all/src/main/java/org/baeldung/startup/LogicInConstructorExampleBean.java @@ -6,6 +6,8 @@ import org.springframework.context.annotation.Scope; import org.springframework.core.env.Environment; import org.springframework.stereotype.Component; +import java.util.Arrays; + @Component @Scope(value = "prototype") public class LogicInConstructorExampleBean { @@ -18,6 +20,6 @@ public class LogicInConstructorExampleBean { public LogicInConstructorExampleBean(Environment environment) { this.environment = environment; - LOG.info(environment); + LOG.info(Arrays.asList(environment.getDefaultProfiles())); } } diff --git a/spring-all/src/main/java/org/baeldung/startup/PostConstructExampleBean.java b/spring-all/src/main/java/org/baeldung/startup/PostConstructExampleBean.java index be21aef70c..4cabaad4df 100644 --- a/spring-all/src/main/java/org/baeldung/startup/PostConstructExampleBean.java +++ b/spring-all/src/main/java/org/baeldung/startup/PostConstructExampleBean.java @@ -7,6 +7,7 @@ import org.springframework.core.env.Environment; import org.springframework.stereotype.Component; import javax.annotation.PostConstruct; +import java.util.Arrays; @Component @Scope(value = "prototype") @@ -19,6 +20,6 @@ public class PostConstructExampleBean { @PostConstruct public void init() { - LOG.info(environment); + LOG.info(Arrays.asList(environment.getDefaultProfiles())); } } From 24e033a24bf1e18ea07bcd80a8a36c8dcfff416b Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Sun, 14 Aug 2016 08:13:04 +0200 Subject: [PATCH 06/10] Add ApplicationListener example --- spring-all/pom.xml | 7 +++++++ .../StartupApplicationListenerExample.java | 16 ++++++++++++++++ .../org/baeldung/startup/SpringStartupTest.java | 6 ++++++ 3 files changed, 29 insertions(+) create mode 100644 spring-all/src/main/java/org/baeldung/startup/StartupApplicationListenerExample.java diff --git a/spring-all/pom.xml b/spring-all/pom.xml index 25a45d9bae..c70d9d75fc 100644 --- a/spring-all/pom.xml +++ b/spring-all/pom.xml @@ -130,6 +130,13 @@ test + + org.assertj + assertj-core + 3.5.1 + test + + org.hamcrest hamcrest-core diff --git a/spring-all/src/main/java/org/baeldung/startup/StartupApplicationListenerExample.java b/spring-all/src/main/java/org/baeldung/startup/StartupApplicationListenerExample.java new file mode 100644 index 0000000000..1c784e0c74 --- /dev/null +++ b/spring-all/src/main/java/org/baeldung/startup/StartupApplicationListenerExample.java @@ -0,0 +1,16 @@ +package org.baeldung.startup; + +import org.springframework.context.ApplicationListener; +import org.springframework.context.event.ContextRefreshedEvent; +import org.springframework.stereotype.Component; + +@Component +public class StartupApplicationListenerExample implements ApplicationListener { + + public static int counter; + + @Override + public void onApplicationEvent(ContextRefreshedEvent event) { + counter++; + } +} diff --git a/spring-all/src/test/java/org/baeldung/startup/SpringStartupTest.java b/spring-all/src/test/java/org/baeldung/startup/SpringStartupTest.java index 1e76fd8746..523a27c2c4 100644 --- a/spring-all/src/test/java/org/baeldung/startup/SpringStartupTest.java +++ b/spring-all/src/test/java/org/baeldung/startup/SpringStartupTest.java @@ -1,5 +1,6 @@ package org.baeldung.startup; +import org.assertj.core.api.Assertions; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.BeanCreationException; @@ -35,4 +36,9 @@ public class SpringStartupTest { public void whenInitializingBean_shouldLogEnv() throws Exception { ctx.getBean(InitializingBeanExampleBean.class); } + + @Test + public void whenApplicationListener_shouldRunOnce() throws Exception { + Assertions.assertThat(StartupApplicationListenerExample.counter).isEqualTo(1); + } } \ No newline at end of file From b759bf7c5946a5682a50ed85c65f506cf88e9069 Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Sun, 14 Aug 2016 08:18:10 +0200 Subject: [PATCH 07/10] Add logging to ApplicationListener example --- .../baeldung/startup/StartupApplicationListenerExample.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/spring-all/src/main/java/org/baeldung/startup/StartupApplicationListenerExample.java b/spring-all/src/main/java/org/baeldung/startup/StartupApplicationListenerExample.java index 1c784e0c74..32a63f0c1a 100644 --- a/spring-all/src/main/java/org/baeldung/startup/StartupApplicationListenerExample.java +++ b/spring-all/src/main/java/org/baeldung/startup/StartupApplicationListenerExample.java @@ -1,5 +1,6 @@ package org.baeldung.startup; +import org.apache.log4j.Logger; import org.springframework.context.ApplicationListener; import org.springframework.context.event.ContextRefreshedEvent; import org.springframework.stereotype.Component; @@ -7,10 +8,13 @@ import org.springframework.stereotype.Component; @Component public class StartupApplicationListenerExample implements ApplicationListener { + private static final Logger LOG = Logger.getLogger(StartupApplicationListenerExample.class); + public static int counter; @Override public void onApplicationEvent(ContextRefreshedEvent event) { + LOG.info("Increment counter"); counter++; } } From d27db567c16d4f35c230369d678b956ac1c6cdb1 Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Sun, 14 Aug 2016 08:58:25 +0200 Subject: [PATCH 08/10] Add init-method example --- .../startup/InitMethodExampleBean.java | 24 +++++++++++++++++++ .../src/main/resources/startupConfig.xml | 10 ++++++++ .../startup/SpringStartupXMLConfigTest.java | 21 ++++++++++++++++ 3 files changed, 55 insertions(+) create mode 100644 spring-all/src/main/java/org/baeldung/startup/InitMethodExampleBean.java create mode 100644 spring-all/src/main/resources/startupConfig.xml create mode 100644 spring-all/src/test/java/org/baeldung/startup/SpringStartupXMLConfigTest.java diff --git a/spring-all/src/main/java/org/baeldung/startup/InitMethodExampleBean.java b/spring-all/src/main/java/org/baeldung/startup/InitMethodExampleBean.java new file mode 100644 index 0000000000..cbbe5665e6 --- /dev/null +++ b/spring-all/src/main/java/org/baeldung/startup/InitMethodExampleBean.java @@ -0,0 +1,24 @@ +package org.baeldung.startup; + +import org.apache.log4j.Logger; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Scope; +import org.springframework.core.env.Environment; +import org.springframework.stereotype.Component; + +import java.util.Arrays; + +@Component +@Scope(value = "prototype") +public class InitMethodExampleBean { + + private static final Logger LOG = Logger.getLogger(InitMethodExampleBean.class); + + @Autowired + private Environment environment; + + public void init() { + LOG.info(Arrays.asList(environment.getDefaultProfiles())); + } +} + diff --git a/spring-all/src/main/resources/startupConfig.xml b/spring-all/src/main/resources/startupConfig.xml new file mode 100644 index 0000000000..440fa68e22 --- /dev/null +++ b/spring-all/src/main/resources/startupConfig.xml @@ -0,0 +1,10 @@ + + + + + \ No newline at end of file diff --git a/spring-all/src/test/java/org/baeldung/startup/SpringStartupXMLConfigTest.java b/spring-all/src/test/java/org/baeldung/startup/SpringStartupXMLConfigTest.java new file mode 100644 index 0000000000..630f21fb14 --- /dev/null +++ b/spring-all/src/test/java/org/baeldung/startup/SpringStartupXMLConfigTest.java @@ -0,0 +1,21 @@ +package org.baeldung.startup; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.ApplicationContext; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration("classpath:startupConfig.xml") +public class SpringStartupXMLConfigTest { + + @Autowired + private ApplicationContext ctx; + + @Test + public void whenPostConstruct_shouldLogEnv() throws Exception { + ctx.getBean(InitMethodExampleBean.class); + } +} From 208fcaa9152a520ce76c4cc020b0b9c1d9564f16 Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Mon, 15 Aug 2016 17:44:19 +0200 Subject: [PATCH 09/10] Add AllStrategies combined example --- .../startup/AllStrategiesExampleBean.java | 33 +++++++++++++++++++ .../startup/InitMethodExampleBean.java | 4 --- .../src/main/resources/startupConfig.xml | 6 ++++ .../startup/SpringStartupXMLConfigTest.java | 5 +++ 4 files changed, 44 insertions(+), 4 deletions(-) create mode 100644 spring-all/src/main/java/org/baeldung/startup/AllStrategiesExampleBean.java diff --git a/spring-all/src/main/java/org/baeldung/startup/AllStrategiesExampleBean.java b/spring-all/src/main/java/org/baeldung/startup/AllStrategiesExampleBean.java new file mode 100644 index 0000000000..d4334437f7 --- /dev/null +++ b/spring-all/src/main/java/org/baeldung/startup/AllStrategiesExampleBean.java @@ -0,0 +1,33 @@ +package org.baeldung.startup; + +import org.apache.log4j.Logger; +import org.springframework.beans.factory.InitializingBean; +import org.springframework.context.annotation.Scope; +import org.springframework.stereotype.Component; + +import javax.annotation.PostConstruct; + +@Component +@Scope(value = "prototype") +public class AllStrategiesExampleBean implements InitializingBean { + + private static final Logger LOG = Logger.getLogger(AllStrategiesExampleBean.class); + + public AllStrategiesExampleBean() { + LOG.info("Constructor"); + } + + @Override + public void afterPropertiesSet() throws Exception { + LOG.info("InitializingBean"); + } + + @PostConstruct + public void postConstruct() { + LOG.info("PostConstruct"); + } + + public void init() { + LOG.info("init-method"); + } +} diff --git a/spring-all/src/main/java/org/baeldung/startup/InitMethodExampleBean.java b/spring-all/src/main/java/org/baeldung/startup/InitMethodExampleBean.java index cbbe5665e6..ea0a85d261 100644 --- a/spring-all/src/main/java/org/baeldung/startup/InitMethodExampleBean.java +++ b/spring-all/src/main/java/org/baeldung/startup/InitMethodExampleBean.java @@ -2,14 +2,10 @@ package org.baeldung.startup; import org.apache.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.annotation.Scope; import org.springframework.core.env.Environment; -import org.springframework.stereotype.Component; import java.util.Arrays; -@Component -@Scope(value = "prototype") public class InitMethodExampleBean { private static final Logger LOG = Logger.getLogger(InitMethodExampleBean.class); diff --git a/spring-all/src/main/resources/startupConfig.xml b/spring-all/src/main/resources/startupConfig.xml index 440fa68e22..8226665a90 100644 --- a/spring-all/src/main/resources/startupConfig.xml +++ b/spring-all/src/main/resources/startupConfig.xml @@ -5,6 +5,12 @@ + + + \ No newline at end of file diff --git a/spring-all/src/test/java/org/baeldung/startup/SpringStartupXMLConfigTest.java b/spring-all/src/test/java/org/baeldung/startup/SpringStartupXMLConfigTest.java index 630f21fb14..19a35bb92b 100644 --- a/spring-all/src/test/java/org/baeldung/startup/SpringStartupXMLConfigTest.java +++ b/spring-all/src/test/java/org/baeldung/startup/SpringStartupXMLConfigTest.java @@ -18,4 +18,9 @@ public class SpringStartupXMLConfigTest { public void whenPostConstruct_shouldLogEnv() throws Exception { ctx.getBean(InitMethodExampleBean.class); } + + @Test + public void whenAllStrategies_shouldLogOrder() throws Exception { + ctx.getBean(AllStrategiesExampleBean.class); + } } From 3949ff343cf3831af24cf0d8cce2ae833493a472 Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Mon, 15 Aug 2016 18:58:47 +0200 Subject: [PATCH 10/10] Remove annotations --- .../java/org/baeldung/startup/AllStrategiesExampleBean.java | 4 ---- 1 file changed, 4 deletions(-) diff --git a/spring-all/src/main/java/org/baeldung/startup/AllStrategiesExampleBean.java b/spring-all/src/main/java/org/baeldung/startup/AllStrategiesExampleBean.java index d4334437f7..64af2d520c 100644 --- a/spring-all/src/main/java/org/baeldung/startup/AllStrategiesExampleBean.java +++ b/spring-all/src/main/java/org/baeldung/startup/AllStrategiesExampleBean.java @@ -2,13 +2,9 @@ package org.baeldung.startup; import org.apache.log4j.Logger; import org.springframework.beans.factory.InitializingBean; -import org.springframework.context.annotation.Scope; -import org.springframework.stereotype.Component; import javax.annotation.PostConstruct; -@Component -@Scope(value = "prototype") public class AllStrategiesExampleBean implements InitializingBean { private static final Logger LOG = Logger.getLogger(AllStrategiesExampleBean.class);