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
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..171d59b5
--- /dev/null
+++ b/src/main/java/guru/springframework/bootstrap/profilesysout/DefaultProfileSysOut.java
@@ -0,0 +1,24 @@
+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;
+
+/**
+ * Created by jt on 5/21/16.
+ */
+@Component
+@Profile("default")
+public class 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/java/guru/springframework/bootstrap/profilesysout/DevProfileSysOut.java b/src/main/java/guru/springframework/bootstrap/profilesysout/DevProfileSysOut.java
new file mode 100644
index 00000000..652f4ea0
--- /dev/null
+++ b/src/main/java/guru/springframework/bootstrap/profilesysout/DevProfileSysOut.java
@@ -0,0 +1,24 @@
+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;
+
+/**
+ * Created by jt on 5/21/16.
+ */
+@Component
+@Profile("dev")
+public class 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
new file mode 100644
index 00000000..9f7980c8
--- /dev/null
+++ b/src/main/java/guru/springframework/bootstrap/profilesysout/ProdProfileSysOut.java
@@ -0,0 +1,24 @@
+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;
+
+/**
+ * Created by jt on 5/21/16.
+ */
+@Component
+@Profile("prod")
+public class 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
new file mode 100644
index 00000000..5e05122a
--- /dev/null
+++ b/src/main/java/guru/springframework/bootstrap/profilesysout/QAProfileSysOut.java
@@ -0,0 +1,24 @@
+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;
+
+/**
+ * Created by jt on 5/21/16.
+ */
+@Component
+@Profile("qa")
+public class 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-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-dev.properties b/src/main/resources/application-dev.properties
new file mode 100644
index 00000000..e69de29b
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
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..b31c8a21
--- /dev/null
+++ b/src/main/resources/application-qa.properties
@@ -0,0 +1,7 @@
+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
diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties
index e6f67126..e69b3533 100644
--- a/src/main/resources/application.properties
+++ b/src/main/resources/application.properties
@@ -1,2 +1,8 @@
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
+
+spring.profiles.active=dev
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/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/ds/DevDataSource.java b/src/test/java/guru/springframework/test/ds/DevDataSource.java
new file mode 100644
index 00000000..a30f00d1
--- /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", "default"})
+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";
+ }
+}
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());
+
+ }
+}
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/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/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/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());
+ }
+
+}
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/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;
+ }
+}
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/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..bd548d48
--- /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}")
+ Integer 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/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
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