From 29cbf08314dd7db21263343241234ef0d1a51bcf Mon Sep 17 00:00:00 2001 From: John Thompson Date: Sat, 7 May 2016 12:49:09 -0400 Subject: [PATCH 01/13] Add Property Source Example --- .../external/props/PropertySourceTest.java | 30 ++++++++++++ .../test/jms/FakeJmsBroker.java | 44 +++++++++++++++++ ...ExternalPropsPropertySourceTestConfig.java | 48 +++++++++++++++++++ src/test/resources/testing.properties | 4 ++ 4 files changed, 126 insertions(+) create mode 100644 src/test/java/guru/springframework/test/external/props/PropertySourceTest.java create mode 100644 src/test/java/guru/springframework/test/jms/FakeJmsBroker.java create mode 100644 src/test/java/guru/test/config/external/props/ExternalPropsPropertySourceTestConfig.java create mode 100644 src/test/resources/testing.properties diff --git a/src/test/java/guru/springframework/test/external/props/PropertySourceTest.java b/src/test/java/guru/springframework/test/external/props/PropertySourceTest.java new file mode 100644 index 00000000..2787613a --- /dev/null +++ b/src/test/java/guru/springframework/test/external/props/PropertySourceTest.java @@ -0,0 +1,30 @@ +package guru.springframework.test.external.props; + +import guru.springframework.test.jms.FakeJmsBroker; +import guru.test.config.external.props.ExternalPropsPropertySourceTestConfig; +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 static org.junit.Assert.assertEquals; + +/** + * Created by jt on 5/7/16. + */ +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(classes = ExternalPropsPropertySourceTestConfig.class) +public class PropertySourceTest { + + @Autowired + FakeJmsBroker fakeJmsBroker; + + @Test + public void testPropsSet() throws Exception { + assertEquals("10.10.10.123", fakeJmsBroker.getUrl()); + assertEquals(3330, fakeJmsBroker.getPort().intValue()); + assertEquals("Ron", fakeJmsBroker.getUser()); + assertEquals("Burgundy", fakeJmsBroker.getPassword()); + } +} diff --git a/src/test/java/guru/springframework/test/jms/FakeJmsBroker.java b/src/test/java/guru/springframework/test/jms/FakeJmsBroker.java new file mode 100644 index 00000000..7631d87f --- /dev/null +++ b/src/test/java/guru/springframework/test/jms/FakeJmsBroker.java @@ -0,0 +1,44 @@ +package guru.springframework.test.jms; + +/** + * Created by jt on 5/7/16. + */ +public class FakeJmsBroker { + + private String url; + private Integer port; + private String user; + private String password; + + public String getUrl() { + return url; + } + + public void setUrl(String url) { + this.url = url; + } + + public Integer getPort() { + return port; + } + + public void setPort(Integer port) { + this.port = port; + } + + public String getUser() { + return user; + } + + public void setUser(String user) { + this.user = user; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } +} diff --git a/src/test/java/guru/test/config/external/props/ExternalPropsPropertySourceTestConfig.java b/src/test/java/guru/test/config/external/props/ExternalPropsPropertySourceTestConfig.java new file mode 100644 index 00000000..023108f0 --- /dev/null +++ b/src/test/java/guru/test/config/external/props/ExternalPropsPropertySourceTestConfig.java @@ -0,0 +1,48 @@ +package guru.test.config.external.props; + +import guru.springframework.test.jms.FakeJmsBroker; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.PropertySource; +import org.springframework.context.support.PropertySourcesPlaceholderConfigurer; + +/** + * + * since Spring 3.1 + * Created by jt on 5/7/16. + */ +@Configuration +@PropertySource("classpath:testing.properties") +public class ExternalPropsPropertySourceTestConfig { + + @Value("${guru.jms.server}") + String jmsServer; + + @Value("${guru.jms.port}") + String jmsPort; + + @Value("${guru.jms.user}") + String jmsUser; + + @Value("${guru.jms.password}") + String jmsPassword; + + + @Bean + public static PropertySourcesPlaceholderConfigurer properties() { + PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer + = new PropertySourcesPlaceholderConfigurer(); + return propertySourcesPlaceholderConfigurer; + } + + @Bean + public FakeJmsBroker fakeJmsBroker(){ + FakeJmsBroker fakeJmsBroker = new FakeJmsBroker(); + fakeJmsBroker.setUrl(jmsServer); + // fakeJmsBroker.setPort(jmsPort); + fakeJmsBroker.setUser(jmsUser); + fakeJmsBroker.setPassword(jmsPassword); + return fakeJmsBroker; + } +} diff --git a/src/test/resources/testing.properties b/src/test/resources/testing.properties new file mode 100644 index 00000000..0975f028 --- /dev/null +++ b/src/test/resources/testing.properties @@ -0,0 +1,4 @@ +guru.jms.server=10.10.10.123 +guru.jms.port=3330 +guru.jms.user=Ron +guru.jms.password=Burgundy \ No newline at end of file From fed3b2a92b7c4c4fcba5131aa212b1325c558549 Mon Sep 17 00:00:00 2001 From: John Thompson Date: Sat, 7 May 2016 12:49:47 -0400 Subject: [PATCH 02/13] fixed type --- .../external/props/ExternalPropsPropertySourceTestConfig.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/test/java/guru/test/config/external/props/ExternalPropsPropertySourceTestConfig.java b/src/test/java/guru/test/config/external/props/ExternalPropsPropertySourceTestConfig.java index 023108f0..bd548d48 100644 --- a/src/test/java/guru/test/config/external/props/ExternalPropsPropertySourceTestConfig.java +++ b/src/test/java/guru/test/config/external/props/ExternalPropsPropertySourceTestConfig.java @@ -20,7 +20,7 @@ public class ExternalPropsPropertySourceTestConfig { String jmsServer; @Value("${guru.jms.port}") - String jmsPort; + Integer jmsPort; @Value("${guru.jms.user}") String jmsUser; @@ -40,7 +40,7 @@ public static PropertySourcesPlaceholderConfigurer properties() { public FakeJmsBroker fakeJmsBroker(){ FakeJmsBroker fakeJmsBroker = new FakeJmsBroker(); fakeJmsBroker.setUrl(jmsServer); - // fakeJmsBroker.setPort(jmsPort); + fakeJmsBroker.setPort(jmsPort); fakeJmsBroker.setUser(jmsUser); fakeJmsBroker.setPassword(jmsPassword); return fakeJmsBroker; From 5b8797a9da3fcf23b1c0e5b37da4c1ba4a77733c Mon Sep 17 00:00:00 2001 From: John Thompson Date: Sat, 7 May 2016 13:29:22 -0400 Subject: [PATCH 03/13] added env example --- .../external/props/PropertySourceEnvTest.java | 31 +++++++++++++++++++ .../props/ExternalPropsEnvironment.java | 29 +++++++++++++++++ 2 files changed, 60 insertions(+) create mode 100644 src/test/java/guru/springframework/test/external/props/PropertySourceEnvTest.java create mode 100644 src/test/java/guru/test/config/external/props/ExternalPropsEnvironment.java diff --git a/src/test/java/guru/springframework/test/external/props/PropertySourceEnvTest.java b/src/test/java/guru/springframework/test/external/props/PropertySourceEnvTest.java new file mode 100644 index 00000000..0bd867f9 --- /dev/null +++ b/src/test/java/guru/springframework/test/external/props/PropertySourceEnvTest.java @@ -0,0 +1,31 @@ +package guru.springframework.test.external.props; + +import guru.springframework.test.jms.FakeJmsBroker; +import guru.test.config.external.props.ExternalPropsEnvironment; +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 static org.junit.Assert.assertEquals; + +/** + * Created by jt on 5/7/16. + */ +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(classes = ExternalPropsEnvironment.class) +public class PropertySourceEnvTest { + + @Autowired + FakeJmsBroker fakeJmsBroker; + + @Test + public void testPropsSet() throws Exception { + assertEquals("10.10.10.123", fakeJmsBroker.getUrl()); + assertEquals(3330, fakeJmsBroker.getPort().intValue()); + assertEquals("Ron", fakeJmsBroker.getUser()); + assertEquals("Burgundy", fakeJmsBroker.getPassword()); + } + +} diff --git a/src/test/java/guru/test/config/external/props/ExternalPropsEnvironment.java b/src/test/java/guru/test/config/external/props/ExternalPropsEnvironment.java new file mode 100644 index 00000000..9efe643e --- /dev/null +++ b/src/test/java/guru/test/config/external/props/ExternalPropsEnvironment.java @@ -0,0 +1,29 @@ +package guru.test.config.external.props; + +import guru.springframework.test.jms.FakeJmsBroker; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.PropertySource; +import org.springframework.core.env.Environment; + +/** + * Created by jt on 5/7/16. + */ +@Configuration +@PropertySource("classpath:testing.properties") +public class ExternalPropsEnvironment { + + @Autowired + Environment env; //also from Spring 3.1 + + @Bean + public FakeJmsBroker fakeJmsBrokerEnv(){ + FakeJmsBroker fakeJmsBroker = new FakeJmsBroker(); + fakeJmsBroker.setUrl(env.getProperty("guru.jms.server")); + fakeJmsBroker.setPort(env.getRequiredProperty("guru.jms.port", Integer.class)); + fakeJmsBroker.setUser(env.getProperty("guru.jms.user")); + fakeJmsBroker.setPassword(env.getProperty("guru.jms.password")); + return fakeJmsBroker; + } +} From d9cbbeb23eee36f54b7c74c21be5f5cfd1565bd7 Mon Sep 17 00:00:00 2001 From: John Thompson Date: Sat, 7 May 2016 15:01:13 -0400 Subject: [PATCH 04/13] added multi file example --- .../props/PropertySourceMultiFileS4Test.java | 30 +++++++++++++++++ .../props/PropertySourceMultiFileTest.java | 30 +++++++++++++++++ .../props/ExternalPropsMultiFile.java | 29 ++++++++++++++++ .../props/ExternalPropsMultiFileS4.java | 33 +++++++++++++++++++ .../resources/encrypted-testing.properties | 1 + 5 files changed, 123 insertions(+) create mode 100644 src/test/java/guru/springframework/test/external/props/PropertySourceMultiFileS4Test.java create mode 100644 src/test/java/guru/springframework/test/external/props/PropertySourceMultiFileTest.java create mode 100644 src/test/java/guru/test/config/external/props/ExternalPropsMultiFile.java create mode 100644 src/test/java/guru/test/config/external/props/ExternalPropsMultiFileS4.java create mode 100644 src/test/resources/encrypted-testing.properties diff --git a/src/test/java/guru/springframework/test/external/props/PropertySourceMultiFileS4Test.java b/src/test/java/guru/springframework/test/external/props/PropertySourceMultiFileS4Test.java new file mode 100644 index 00000000..50fb2d74 --- /dev/null +++ b/src/test/java/guru/springframework/test/external/props/PropertySourceMultiFileS4Test.java @@ -0,0 +1,30 @@ +package guru.springframework.test.external.props; + +import guru.springframework.test.jms.FakeJmsBroker; +import guru.test.config.external.props.ExternalPropsMultiFileS4; +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 static org.junit.Assert.assertEquals; + +/** + * Created by jt on 5/7/16. + */ +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(classes = ExternalPropsMultiFileS4.class) +public class PropertySourceMultiFileS4Test { + + @Autowired + FakeJmsBroker fakeJmsBroker; + + @Test + public void testPropsSet() throws Exception { + assertEquals("10.10.10.123", fakeJmsBroker.getUrl()); + assertEquals(3330, fakeJmsBroker.getPort().intValue()); + assertEquals("Ron", fakeJmsBroker.getUser()); + assertEquals("&%$)(*&#^!@!@#$", fakeJmsBroker.getPassword()); + } +} diff --git a/src/test/java/guru/springframework/test/external/props/PropertySourceMultiFileTest.java b/src/test/java/guru/springframework/test/external/props/PropertySourceMultiFileTest.java new file mode 100644 index 00000000..df0b64c9 --- /dev/null +++ b/src/test/java/guru/springframework/test/external/props/PropertySourceMultiFileTest.java @@ -0,0 +1,30 @@ +package guru.springframework.test.external.props; + +import guru.springframework.test.jms.FakeJmsBroker; +import guru.test.config.external.props.ExternalPropsMultiFile; +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 static org.junit.Assert.assertEquals; + +/** + * Created by jt on 5/7/16. + */ +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(classes = ExternalPropsMultiFile.class) +public class PropertySourceMultiFileTest { + + @Autowired + FakeJmsBroker fakeJmsBroker; + + @Test + public void testPropsSet() throws Exception { + assertEquals("10.10.10.123", fakeJmsBroker.getUrl()); + assertEquals(3330, fakeJmsBroker.getPort().intValue()); + assertEquals("Ron", fakeJmsBroker.getUser()); + assertEquals("&%$)(*&#^!@!@#$", fakeJmsBroker.getPassword()); + } +} diff --git a/src/test/java/guru/test/config/external/props/ExternalPropsMultiFile.java b/src/test/java/guru/test/config/external/props/ExternalPropsMultiFile.java new file mode 100644 index 00000000..89dce1aa --- /dev/null +++ b/src/test/java/guru/test/config/external/props/ExternalPropsMultiFile.java @@ -0,0 +1,29 @@ +package guru.test.config.external.props; + +import guru.springframework.test.jms.FakeJmsBroker; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.PropertySource; +import org.springframework.core.env.Environment; + +/** + * Created by jt on 5/7/16. + */ +@Configuration +@PropertySource({"classpath:testing.properties", "classpath:encrypted-testing.properties"}) +public class ExternalPropsMultiFile { + + @Autowired + Environment env; + + @Bean + public FakeJmsBroker fakeJmsBrokerMulti(){ + FakeJmsBroker fakeJmsBroker = new FakeJmsBroker(); + fakeJmsBroker.setUrl(env.getProperty("guru.jms.server")); + fakeJmsBroker.setPort(env.getRequiredProperty("guru.jms.port", Integer.class)); + fakeJmsBroker.setUser(env.getProperty("guru.jms.user")); + fakeJmsBroker.setPassword(env.getProperty("guru.jms.encrypted.password")); + return fakeJmsBroker; + } +} diff --git a/src/test/java/guru/test/config/external/props/ExternalPropsMultiFileS4.java b/src/test/java/guru/test/config/external/props/ExternalPropsMultiFileS4.java new file mode 100644 index 00000000..81024ff3 --- /dev/null +++ b/src/test/java/guru/test/config/external/props/ExternalPropsMultiFileS4.java @@ -0,0 +1,33 @@ +package guru.test.config.external.props; + +import guru.springframework.test.jms.FakeJmsBroker; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.PropertySource; +import org.springframework.context.annotation.PropertySources; +import org.springframework.core.env.Environment; + +/** + * Created by jt on 5/7/16. + */ +@Configuration +@PropertySources({ + @PropertySource("classpath:testing.properties"), + @PropertySource("classpath:encrypted-testing.properties") +}) +public class ExternalPropsMultiFileS4 { + + @Autowired + Environment env; + + @Bean + public FakeJmsBroker fakeJmsBrokerMultiS4(){ + FakeJmsBroker fakeJmsBroker = new FakeJmsBroker(); + fakeJmsBroker.setUrl(env.getProperty("guru.jms.server")); + fakeJmsBroker.setPort(env.getRequiredProperty("guru.jms.port", Integer.class)); + fakeJmsBroker.setUser(env.getProperty("guru.jms.user")); + fakeJmsBroker.setPassword(env.getProperty("guru.jms.encrypted.password")); + return fakeJmsBroker; + } +} diff --git a/src/test/resources/encrypted-testing.properties b/src/test/resources/encrypted-testing.properties new file mode 100644 index 00000000..bbf3ff72 --- /dev/null +++ b/src/test/resources/encrypted-testing.properties @@ -0,0 +1 @@ +guru.jms.encrypted.password=&%$)(*&#^!@!@#$ \ No newline at end of file From e0c1fafb1591a8b60d68fdf822f3d965c07e6c56 Mon Sep 17 00:00:00 2001 From: John Thompson Date: Mon, 16 May 2016 12:33:31 -0400 Subject: [PATCH 05/13] Sprring Boot Properties --- src/main/resources/application.properties | 6 +++- .../test/config/SpringBootJavaConfig.java | 34 +++++++++++++++++++ .../props/SpringBootPropertiesTest.java | 34 +++++++++++++++++++ 3 files changed, 73 insertions(+), 1 deletion(-) create mode 100644 src/test/java/guru/springframework/test/config/SpringBootJavaConfig.java create mode 100644 src/test/java/guru/springframework/test/external/props/SpringBootPropertiesTest.java diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index e6f67126..b9a151db 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -1,2 +1,6 @@ spring.activemq.in-memory=true -spring.activemq.pooled=false \ No newline at end of file +spring.activemq.pooled=false +guru.jms.server=10.10.10.123 +guru.jms.port=3330 +guru.jms.user=Ron +guru.jms.password=Burgundy \ No newline at end of file diff --git a/src/test/java/guru/springframework/test/config/SpringBootJavaConfig.java b/src/test/java/guru/springframework/test/config/SpringBootJavaConfig.java new file mode 100644 index 00000000..8765e18f --- /dev/null +++ b/src/test/java/guru/springframework/test/config/SpringBootJavaConfig.java @@ -0,0 +1,34 @@ +package guru.springframework.test.config; + +import guru.springframework.test.jms.FakeJmsBroker; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +/** + * Created by jt on 5/7/16. + */ +@Configuration +public class SpringBootJavaConfig { + @Value("${guru.jms.server}") + String jmsServer; + + @Value("${guru.jms.port}") + Integer jmsPort; + + @Value("${guru.jms.user}") + String jmsUser; + + @Value("${guru.jms.password}") + String jmsPassword; + + @Bean + public FakeJmsBroker fakeJmsBroker(){ + FakeJmsBroker fakeJmsBroker = new FakeJmsBroker(); + fakeJmsBroker.setUrl(jmsServer); + fakeJmsBroker.setPort(jmsPort); + fakeJmsBroker.setUser(jmsUser); + fakeJmsBroker.setPassword(jmsPassword); + return fakeJmsBroker; + } +} diff --git a/src/test/java/guru/springframework/test/external/props/SpringBootPropertiesTest.java b/src/test/java/guru/springframework/test/external/props/SpringBootPropertiesTest.java new file mode 100644 index 00000000..0b1ead73 --- /dev/null +++ b/src/test/java/guru/springframework/test/external/props/SpringBootPropertiesTest.java @@ -0,0 +1,34 @@ +package guru.springframework.test.external.props; + +import guru.springframework.SpringCoreDevOpsApplication; +import guru.springframework.test.jms.FakeJmsBroker; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.SpringApplicationConfiguration; +import org.springframework.boot.test.WebIntegrationTest; +import org.springframework.test.context.TestPropertySource; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +import static org.junit.Assert.assertEquals; + +/** + * Created by jt on 5/7/16. + */ +@RunWith(SpringJUnit4ClassRunner.class) +@SpringApplicationConfiguration(SpringCoreDevOpsApplication.class) +@WebIntegrationTest +@TestPropertySource("/application.properties") +public class SpringBootPropertiesTest { + @Autowired + FakeJmsBroker fakeJmsBroker; + + @Test + public void testPropsSet() throws Exception { + assertEquals("10.10.10.123", fakeJmsBroker.getUrl()); + assertEquals(3330, fakeJmsBroker.getPort().intValue()); + assertEquals("Ron", fakeJmsBroker.getUser()); + assertEquals("Burgundy", fakeJmsBroker.getPassword()); + } + +} From ed001ff520169e09da8a1291a66b2d1f14615baf Mon Sep 17 00:00:00 2001 From: John Thompson Date: Sat, 21 May 2016 14:22:07 -0400 Subject: [PATCH 06/13] configuring Spring Profiles --- .../springframework/test/ds/DevDataSource.java | 16 ++++++++++++++++ .../springframework/test/ds/FakeDataSource.java | 9 +++++++++ .../springframework/test/ds/ProdDataSource.java | 16 ++++++++++++++++ .../springframework/test/ds/QADataSource.java | 17 +++++++++++++++++ 4 files changed, 58 insertions(+) create mode 100644 src/test/java/guru/springframework/test/ds/DevDataSource.java create mode 100644 src/test/java/guru/springframework/test/ds/FakeDataSource.java create mode 100644 src/test/java/guru/springframework/test/ds/ProdDataSource.java create mode 100644 src/test/java/guru/springframework/test/ds/QADataSource.java diff --git a/src/test/java/guru/springframework/test/ds/DevDataSource.java b/src/test/java/guru/springframework/test/ds/DevDataSource.java new file mode 100644 index 00000000..1d9c30a9 --- /dev/null +++ b/src/test/java/guru/springframework/test/ds/DevDataSource.java @@ -0,0 +1,16 @@ +package guru.springframework.test.ds; + +import org.springframework.context.annotation.Profile; +import org.springframework.stereotype.Component; + +/** + * Created by jt on 5/21/16. + */ +@Component +@Profile("dev") +public class DevDataSource implements FakeDataSource { + @Override + public String getConnectionInfo() { + return "I'm the Development DataSource"; + } +} diff --git a/src/test/java/guru/springframework/test/ds/FakeDataSource.java b/src/test/java/guru/springframework/test/ds/FakeDataSource.java new file mode 100644 index 00000000..38c28d08 --- /dev/null +++ b/src/test/java/guru/springframework/test/ds/FakeDataSource.java @@ -0,0 +1,9 @@ +package guru.springframework.test.ds; + +/** + * Created by jt on 5/21/16. + */ +public interface FakeDataSource { + + String getConnectionInfo(); +} diff --git a/src/test/java/guru/springframework/test/ds/ProdDataSource.java b/src/test/java/guru/springframework/test/ds/ProdDataSource.java new file mode 100644 index 00000000..49fbd52a --- /dev/null +++ b/src/test/java/guru/springframework/test/ds/ProdDataSource.java @@ -0,0 +1,16 @@ +package guru.springframework.test.ds; + +import org.springframework.context.annotation.Profile; +import org.springframework.stereotype.Component; + +/** + * Created by jt on 5/21/16. + */ +@Component +@Profile("prod") +public class ProdDataSource implements FakeDataSource { + @Override + public String getConnectionInfo() { + return "I'm the Production Datasource"; + } +} diff --git a/src/test/java/guru/springframework/test/ds/QADataSource.java b/src/test/java/guru/springframework/test/ds/QADataSource.java new file mode 100644 index 00000000..aeb017c9 --- /dev/null +++ b/src/test/java/guru/springframework/test/ds/QADataSource.java @@ -0,0 +1,17 @@ +package guru.springframework.test.ds; + +import org.springframework.context.annotation.Profile; +import org.springframework.stereotype.Component; + +/** + * Created by jt on 5/21/16. + */ +@Component +@Profile("qa") +public class QADataSource implements FakeDataSource { + + @Override + public String getConnectionInfo() { + return "I'm the QA Datasource"; + } +} From 83699f30ccd037af4d52c54796fdf59b2b382148 Mon Sep 17 00:00:00 2001 From: John Thompson Date: Sat, 21 May 2016 14:49:26 -0400 Subject: [PATCH 07/13] Testing Active Profiles --- .../test/config/DataSourceConfig.java | 12 +++++++ .../test/ds/DevDataSource.java | 2 +- .../test/dstest/DataSourceTest.java | 34 +++++++++++++++++++ 3 files changed, 47 insertions(+), 1 deletion(-) create mode 100644 src/test/java/guru/springframework/test/config/DataSourceConfig.java create mode 100644 src/test/java/guru/springframework/test/dstest/DataSourceTest.java diff --git a/src/test/java/guru/springframework/test/config/DataSourceConfig.java b/src/test/java/guru/springframework/test/config/DataSourceConfig.java new file mode 100644 index 00000000..f36104f7 --- /dev/null +++ b/src/test/java/guru/springframework/test/config/DataSourceConfig.java @@ -0,0 +1,12 @@ +package guru.springframework.test.config; + +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; + +/** + * Created by jt on 5/21/16. + */ +@Configuration +@ComponentScan("guru.springframework.test.ds") +public class DataSourceConfig { +} diff --git a/src/test/java/guru/springframework/test/ds/DevDataSource.java b/src/test/java/guru/springframework/test/ds/DevDataSource.java index 1d9c30a9..a30f00d1 100644 --- a/src/test/java/guru/springframework/test/ds/DevDataSource.java +++ b/src/test/java/guru/springframework/test/ds/DevDataSource.java @@ -7,7 +7,7 @@ * Created by jt on 5/21/16. */ @Component -@Profile("dev") +@Profile({"dev", "default"}) public class DevDataSource implements FakeDataSource { @Override public String getConnectionInfo() { diff --git a/src/test/java/guru/springframework/test/dstest/DataSourceTest.java b/src/test/java/guru/springframework/test/dstest/DataSourceTest.java new file mode 100644 index 00000000..4cc60f41 --- /dev/null +++ b/src/test/java/guru/springframework/test/dstest/DataSourceTest.java @@ -0,0 +1,34 @@ +package guru.springframework.test.dstest; + +/** + * Created by jt on 5/21/16. + */ + +import guru.springframework.test.config.DataSourceConfig; +import guru.springframework.test.ds.FakeDataSource; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.SpringApplicationConfiguration; +import org.springframework.test.context.ActiveProfiles; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +@RunWith(SpringJUnit4ClassRunner.class) +@SpringApplicationConfiguration(DataSourceConfig.class) +@ActiveProfiles("guru") +public class DataSourceTest { + + private FakeDataSource fakeDataSource; + + @Autowired + public void setFakeDataSource(FakeDataSource fakeDataSource) { + this.fakeDataSource = fakeDataSource; + } + + @Test + public void TestDataSource() throws Exception { + + System.out.println(fakeDataSource.getConnectionInfo()); + + } +} From 3d15e5d2e2d66fe2f72f9fcb743a037def665dbc Mon Sep 17 00:00:00 2001 From: John Thompson Date: Sat, 21 May 2016 15:28:23 -0400 Subject: [PATCH 08/13] Profiles at Runtime --- .../profilesysout/DefaultProfileSysOut.java | 20 +++++++++++++++++++ .../profilesysout/DevProfileSysOut.java | 20 +++++++++++++++++++ .../profilesysout/ProdProfileSysOut.java | 19 ++++++++++++++++++ .../profilesysout/QAProfileSysOut.java | 20 +++++++++++++++++++ src/main/resources/application.properties | 4 +++- 5 files changed, 82 insertions(+), 1 deletion(-) create mode 100644 src/main/java/guru/springframework/bootstrap/profilesysout/DefaultProfileSysOut.java create mode 100644 src/main/java/guru/springframework/bootstrap/profilesysout/DevProfileSysOut.java create mode 100644 src/main/java/guru/springframework/bootstrap/profilesysout/ProdProfileSysOut.java create mode 100644 src/main/java/guru/springframework/bootstrap/profilesysout/QAProfileSysOut.java diff --git a/src/main/java/guru/springframework/bootstrap/profilesysout/DefaultProfileSysOut.java b/src/main/java/guru/springframework/bootstrap/profilesysout/DefaultProfileSysOut.java new file mode 100644 index 00000000..90377caa --- /dev/null +++ b/src/main/java/guru/springframework/bootstrap/profilesysout/DefaultProfileSysOut.java @@ -0,0 +1,20 @@ +package guru.springframework.bootstrap.profilesysout; + +import org.springframework.context.annotation.Profile; +import org.springframework.stereotype.Component; + +/** + * Created by jt on 5/21/16. + */ +@Component +@Profile("default") +public class DefaultProfileSysOut { + + public DefaultProfileSysOut() { + System.out.println("##################################"); + System.out.println("##################################"); + System.out.println("## DEFAULT ##"); + System.out.println("##################################"); + System.out.println("##################################"); + } +} diff --git a/src/main/java/guru/springframework/bootstrap/profilesysout/DevProfileSysOut.java b/src/main/java/guru/springframework/bootstrap/profilesysout/DevProfileSysOut.java new file mode 100644 index 00000000..89f245dd --- /dev/null +++ b/src/main/java/guru/springframework/bootstrap/profilesysout/DevProfileSysOut.java @@ -0,0 +1,20 @@ +package guru.springframework.bootstrap.profilesysout; + +import org.springframework.context.annotation.Profile; +import org.springframework.stereotype.Component; + +/** + * Created by jt on 5/21/16. + */ +@Component +@Profile("dev") +public class DevProfileSysOut { + + public DevProfileSysOut() { + System.out.println("##################################"); + System.out.println("##################################"); + System.out.println("## DEV ##"); + System.out.println("##################################"); + System.out.println("##################################"); + } +} diff --git a/src/main/java/guru/springframework/bootstrap/profilesysout/ProdProfileSysOut.java b/src/main/java/guru/springframework/bootstrap/profilesysout/ProdProfileSysOut.java new file mode 100644 index 00000000..08011a18 --- /dev/null +++ b/src/main/java/guru/springframework/bootstrap/profilesysout/ProdProfileSysOut.java @@ -0,0 +1,19 @@ +package guru.springframework.bootstrap.profilesysout; + +import org.springframework.context.annotation.Profile; +import org.springframework.stereotype.Component; + +/** + * Created by jt on 5/21/16. + */ +@Component +@Profile("prod") +public class ProdProfileSysOut { + public ProdProfileSysOut() { + System.out.println("##################################"); + System.out.println("##################################"); + System.out.println("## PROD ##"); + System.out.println("##################################"); + System.out.println("##################################"); + } +} diff --git a/src/main/java/guru/springframework/bootstrap/profilesysout/QAProfileSysOut.java b/src/main/java/guru/springframework/bootstrap/profilesysout/QAProfileSysOut.java new file mode 100644 index 00000000..bb49711a --- /dev/null +++ b/src/main/java/guru/springframework/bootstrap/profilesysout/QAProfileSysOut.java @@ -0,0 +1,20 @@ +package guru.springframework.bootstrap.profilesysout; + +import org.springframework.context.annotation.Profile; +import org.springframework.stereotype.Component; + +/** + * Created by jt on 5/21/16. + */ +@Component +@Profile("qa") +public class QAProfileSysOut { + + public QAProfileSysOut() { + System.out.println("##################################"); + System.out.println("##################################"); + System.out.println("## QA ##"); + System.out.println("##################################"); + System.out.println("##################################"); + } +} diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index b9a151db..099aaabb 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -3,4 +3,6 @@ spring.activemq.pooled=false guru.jms.server=10.10.10.123 guru.jms.port=3330 guru.jms.user=Ron -guru.jms.password=Burgundy \ No newline at end of file +guru.jms.password=Burgundy + +spring.profiles.active=dev \ No newline at end of file From e77338a3f15131db5908191e5b37c0c094992452 Mon Sep 17 00:00:00 2001 From: John Thompson Date: Sat, 21 May 2016 15:54:12 -0400 Subject: [PATCH 09/13] Profiles at Runtime --- .../bootstrap/profilesysout/DefaultProfileSysOut.java | 6 +++++- src/main/resources/application-default.properties | 1 + src/main/resources/application.properties | 2 +- 3 files changed, 7 insertions(+), 2 deletions(-) create mode 100644 src/main/resources/application-default.properties diff --git a/src/main/java/guru/springframework/bootstrap/profilesysout/DefaultProfileSysOut.java b/src/main/java/guru/springframework/bootstrap/profilesysout/DefaultProfileSysOut.java index 90377caa..171d59b5 100644 --- a/src/main/java/guru/springframework/bootstrap/profilesysout/DefaultProfileSysOut.java +++ b/src/main/java/guru/springframework/bootstrap/profilesysout/DefaultProfileSysOut.java @@ -1,5 +1,7 @@ package guru.springframework.bootstrap.profilesysout; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Profile; import org.springframework.stereotype.Component; @@ -10,10 +12,12 @@ @Profile("default") public class DefaultProfileSysOut { - public DefaultProfileSysOut() { + @Autowired + public DefaultProfileSysOut(@Value("${guru.springframework.profile.message}") String msg) { System.out.println("##################################"); System.out.println("##################################"); System.out.println("## DEFAULT ##"); + System.out.println(msg); System.out.println("##################################"); System.out.println("##################################"); } diff --git a/src/main/resources/application-default.properties b/src/main/resources/application-default.properties new file mode 100644 index 00000000..2d9b3732 --- /dev/null +++ b/src/main/resources/application-default.properties @@ -0,0 +1 @@ +guru.springframework.profile.message=This is a default profile \ No newline at end of file diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 099aaabb..050b80e5 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -5,4 +5,4 @@ guru.jms.port=3330 guru.jms.user=Ron guru.jms.password=Burgundy -spring.profiles.active=dev \ No newline at end of file +#spring.profiles.active=dev From 6b6b26b5ea46f015fe58436608d5ed8416eacd93 Mon Sep 17 00:00:00 2001 From: John Thompson Date: Sat, 21 May 2016 16:26:52 -0400 Subject: [PATCH 10/13] Code Assignment complete --- .../profilesysout/DevProfileSysOut.java | 6 +++++- .../profilesysout/NonProfileBean.java | 18 ++++++++++++++++++ .../profilesysout/ProdProfileSysOut.java | 7 ++++++- .../profilesysout/QAProfileSysOut.java | 6 +++++- src/main/resources/application-dev.properties | 1 + src/main/resources/application-prod.properties | 1 + src/main/resources/application-qa.properties | 1 + src/main/resources/application.properties | 2 +- 8 files changed, 38 insertions(+), 4 deletions(-) create mode 100644 src/main/java/guru/springframework/bootstrap/profilesysout/NonProfileBean.java create mode 100644 src/main/resources/application-dev.properties create mode 100644 src/main/resources/application-prod.properties create mode 100644 src/main/resources/application-qa.properties diff --git a/src/main/java/guru/springframework/bootstrap/profilesysout/DevProfileSysOut.java b/src/main/java/guru/springframework/bootstrap/profilesysout/DevProfileSysOut.java index 89f245dd..652f4ea0 100644 --- a/src/main/java/guru/springframework/bootstrap/profilesysout/DevProfileSysOut.java +++ b/src/main/java/guru/springframework/bootstrap/profilesysout/DevProfileSysOut.java @@ -1,5 +1,7 @@ package guru.springframework.bootstrap.profilesysout; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Profile; import org.springframework.stereotype.Component; @@ -10,10 +12,12 @@ @Profile("dev") public class DevProfileSysOut { - public DevProfileSysOut() { + @Autowired + public DevProfileSysOut(@Value("${guru.springframework.profile.message}") String msg) { System.out.println("##################################"); System.out.println("##################################"); System.out.println("## DEV ##"); + System.out.println(msg); System.out.println("##################################"); System.out.println("##################################"); } diff --git a/src/main/java/guru/springframework/bootstrap/profilesysout/NonProfileBean.java b/src/main/java/guru/springframework/bootstrap/profilesysout/NonProfileBean.java new file mode 100644 index 00000000..2dccdb04 --- /dev/null +++ b/src/main/java/guru/springframework/bootstrap/profilesysout/NonProfileBean.java @@ -0,0 +1,18 @@ +package guru.springframework.bootstrap.profilesysout; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; + +/** + * Created by jt on 5/21/16. + */ +@Component +public class NonProfileBean { + + @Autowired + public NonProfileBean(@Value("${guru.springframework.profile.message}") String msg) { + System.out.println("**********" + msg + "************"); + + } +} diff --git a/src/main/java/guru/springframework/bootstrap/profilesysout/ProdProfileSysOut.java b/src/main/java/guru/springframework/bootstrap/profilesysout/ProdProfileSysOut.java index 08011a18..9f7980c8 100644 --- a/src/main/java/guru/springframework/bootstrap/profilesysout/ProdProfileSysOut.java +++ b/src/main/java/guru/springframework/bootstrap/profilesysout/ProdProfileSysOut.java @@ -1,5 +1,7 @@ package guru.springframework.bootstrap.profilesysout; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Profile; import org.springframework.stereotype.Component; @@ -9,10 +11,13 @@ @Component @Profile("prod") public class ProdProfileSysOut { - public ProdProfileSysOut() { + + @Autowired + public ProdProfileSysOut(@Value("${guru.springframework.profile.message}") String msg) { System.out.println("##################################"); System.out.println("##################################"); System.out.println("## PROD ##"); + System.out.println(msg); System.out.println("##################################"); System.out.println("##################################"); } diff --git a/src/main/java/guru/springframework/bootstrap/profilesysout/QAProfileSysOut.java b/src/main/java/guru/springframework/bootstrap/profilesysout/QAProfileSysOut.java index bb49711a..5e05122a 100644 --- a/src/main/java/guru/springframework/bootstrap/profilesysout/QAProfileSysOut.java +++ b/src/main/java/guru/springframework/bootstrap/profilesysout/QAProfileSysOut.java @@ -1,5 +1,7 @@ package guru.springframework.bootstrap.profilesysout; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Profile; import org.springframework.stereotype.Component; @@ -10,10 +12,12 @@ @Profile("qa") public class QAProfileSysOut { - public QAProfileSysOut() { + @Autowired + public QAProfileSysOut(@Value("${guru.springframework.profile.message}") String msg) { System.out.println("##################################"); System.out.println("##################################"); System.out.println("## QA ##"); + System.out.println(msg); System.out.println("##################################"); System.out.println("##################################"); } diff --git a/src/main/resources/application-dev.properties b/src/main/resources/application-dev.properties new file mode 100644 index 00000000..535b3e6b --- /dev/null +++ b/src/main/resources/application-dev.properties @@ -0,0 +1 @@ +guru.springframework.profile.message=This is my DEV profile \ No newline at end of file diff --git a/src/main/resources/application-prod.properties b/src/main/resources/application-prod.properties new file mode 100644 index 00000000..329b2205 --- /dev/null +++ b/src/main/resources/application-prod.properties @@ -0,0 +1 @@ +guru.springframework.profile.message=This is my production profile \ No newline at end of file diff --git a/src/main/resources/application-qa.properties b/src/main/resources/application-qa.properties new file mode 100644 index 00000000..ad408667 --- /dev/null +++ b/src/main/resources/application-qa.properties @@ -0,0 +1 @@ +guru.springframework.profile.message=This is my QA Profile \ No newline at end of file diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 050b80e5..e69b3533 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -5,4 +5,4 @@ guru.jms.port=3330 guru.jms.user=Ron guru.jms.password=Burgundy -#spring.profiles.active=dev +spring.profiles.active=dev From 598570b7f12af3d7d40533eeb8ddbe6240346c08 Mon Sep 17 00:00:00 2001 From: John Thompson Date: Sat, 21 May 2016 16:54:37 -0400 Subject: [PATCH 11/13] added YAML example --- src/main/resources/application-dev.properties | 1 - src/main/resources/application-dev.yaml | 4 ++++ 2 files changed, 4 insertions(+), 1 deletion(-) create mode 100644 src/main/resources/application-dev.yaml diff --git a/src/main/resources/application-dev.properties b/src/main/resources/application-dev.properties index 535b3e6b..e69de29b 100644 --- a/src/main/resources/application-dev.properties +++ b/src/main/resources/application-dev.properties @@ -1 +0,0 @@ -guru.springframework.profile.message=This is my DEV profile \ No newline at end of file diff --git a/src/main/resources/application-dev.yaml b/src/main/resources/application-dev.yaml new file mode 100644 index 00000000..d90fe99d --- /dev/null +++ b/src/main/resources/application-dev.yaml @@ -0,0 +1,4 @@ +guru: + springframework: + profile: + message: This is my DEV profile \ No newline at end of file From 886a431f875543c79539ee21a33add19e39348e9 Mon Sep 17 00:00:00 2001 From: John Thompson Date: Thu, 26 May 2016 18:59:00 -0400 Subject: [PATCH 12/13] added YAML example --- pom.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pom.xml b/pom.xml index 193876b0..ef6166de 100644 --- a/pom.xml +++ b/pom.xml @@ -52,6 +52,8 @@ h2 runtime + + mysql mysql-connector-java From 6da54eb876bc1554e659ee303508a69857baf50d Mon Sep 17 00:00:00 2001 From: John Thompson Date: Thu, 26 May 2016 19:44:59 -0400 Subject: [PATCH 13/13] added mysql settings --- src/main/resources/application-qa.properties | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/main/resources/application-qa.properties b/src/main/resources/application-qa.properties index ad408667..b31c8a21 100644 --- a/src/main/resources/application-qa.properties +++ b/src/main/resources/application-qa.properties @@ -1 +1,7 @@ -guru.springframework.profile.message=This is my QA Profile \ No newline at end of file +guru.springframework.profile.message=This is my QA Profile + +spring.datasource.url=jdbc:mysql://localhost:3306/springguru +spring.datasource.username=root +spring.datasource.password= + +spring.jpa.hibernate.ddl-auto=update \ No newline at end of file