diff --git a/springframework-springfundamentals-project/conference-javaconfig/.idea/.gitignore b/springframework-springfundamentals-project/conference-javaconfig/.idea/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..26d33521af10bcc7fd8cea344038eaaeb78d0ef5
--- /dev/null
+++ b/springframework-springfundamentals-project/conference-javaconfig/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/springframework-springfundamentals-project/conference-javaconfig/.idea/compiler.xml b/springframework-springfundamentals-project/conference-javaconfig/.idea/compiler.xml
new file mode 100644
index 0000000000000000000000000000000000000000..f5ef3e99988ecef7e732e7d7dde8e231c547406f
--- /dev/null
+++ b/springframework-springfundamentals-project/conference-javaconfig/.idea/compiler.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="CompilerConfiguration">
+    <annotationProcessing>
+      <profile name="Maven default annotation processors profile" enabled="true">
+        <sourceOutputDir name="target/generated-sources/annotations" />
+        <sourceTestOutputDir name="target/generated-test-sources/test-annotations" />
+        <outputRelativeToContentRoot value="true" />
+        <module name="conference" />
+        <module name="conference-javaconfig" />
+      </profile>
+    </annotationProcessing>
+  </component>
+</project>
\ No newline at end of file
diff --git a/springframework-springfundamentals-project/conference-javaconfig/.idea/jarRepositories.xml b/springframework-springfundamentals-project/conference-javaconfig/.idea/jarRepositories.xml
new file mode 100644
index 0000000000000000000000000000000000000000..712ab9d985c20018a0c97b93d2148ac1ffe588a5
--- /dev/null
+++ b/springframework-springfundamentals-project/conference-javaconfig/.idea/jarRepositories.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="RemoteRepositoriesConfiguration">
+    <remote-repository>
+      <option name="id" value="central" />
+      <option name="name" value="Central Repository" />
+      <option name="url" value="https://repo.maven.apache.org/maven2" />
+    </remote-repository>
+    <remote-repository>
+      <option name="id" value="central" />
+      <option name="name" value="Maven Central repository" />
+      <option name="url" value="https://repo1.maven.org/maven2" />
+    </remote-repository>
+    <remote-repository>
+      <option name="id" value="jboss.community" />
+      <option name="name" value="JBoss Community repository" />
+      <option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" />
+    </remote-repository>
+  </component>
+</project>
\ No newline at end of file
diff --git a/springframework-springfundamentals-project/conference-javaconfig/.idea/misc.xml b/springframework-springfundamentals-project/conference-javaconfig/.idea/misc.xml
new file mode 100644
index 0000000000000000000000000000000000000000..4b661a5ffc3c46924b456f0eac25ea4c6e9b4047
--- /dev/null
+++ b/springframework-springfundamentals-project/conference-javaconfig/.idea/misc.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ExternalStorageConfigurationManager" enabled="true" />
+  <component name="MavenProjectsManager">
+    <option name="originalFiles">
+      <list>
+        <option value="$PROJECT_DIR$/pom.xml" />
+      </list>
+    </option>
+  </component>
+  <component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" project-jdk-name="1.8" project-jdk-type="JavaSDK">
+    <output url="file://$PROJECT_DIR$/out" />
+  </component>
+</project>
\ No newline at end of file
diff --git a/springframework-springfundamentals-project/conference-javaconfig/.idea/vcs.xml b/springframework-springfundamentals-project/conference-javaconfig/.idea/vcs.xml
new file mode 100644
index 0000000000000000000000000000000000000000..b2bdec2d71b6a5ce4ae49efc37516809c50e4d5e
--- /dev/null
+++ b/springframework-springfundamentals-project/conference-javaconfig/.idea/vcs.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="VcsDirectoryMappings">
+    <mapping directory="$PROJECT_DIR$/../.." vcs="Git" />
+  </component>
+</project>
\ No newline at end of file
diff --git a/springframework-springfundamentals-project/conference-javaconfig/conference-javaconfig.iml b/springframework-springfundamentals-project/conference-javaconfig/conference-javaconfig.iml
new file mode 100644
index 0000000000000000000000000000000000000000..78b2cc53b203f0b97534bb1184cdc7b474339fb4
--- /dev/null
+++ b/springframework-springfundamentals-project/conference-javaconfig/conference-javaconfig.iml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module type="JAVA_MODULE" version="4" />
\ No newline at end of file
diff --git a/springframework-springfundamentals-project/conference-javaconfig/pom.xml b/springframework-springfundamentals-project/conference-javaconfig/pom.xml
new file mode 100644
index 0000000000000000000000000000000000000000..e7ceb45a18ce88a0f036f264f068e3f0a4d9aaf8
--- /dev/null
+++ b/springframework-springfundamentals-project/conference-javaconfig/pom.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <groupId>org.example</groupId>
+    <artifactId>conference-javaconfig</artifactId>
+    <version>1.0-SNAPSHOT</version>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-context</artifactId>
+            <version>5.2.13.RELEASE</version>
+        </dependency>
+    </dependencies>
+
+    <properties>
+        <maven.compiler.source>8</maven.compiler.source>
+        <maven.compiler.target>8</maven.compiler.target>
+    </properties>
+
+
+</project>
\ No newline at end of file
diff --git a/springframework-springfundamentals-project/conference-javaconfig/src/main/java/AppConfig.java b/springframework-springfundamentals-project/conference-javaconfig/src/main/java/AppConfig.java
new file mode 100644
index 0000000000000000000000000000000000000000..16011107d4f84723b3341339e056db7498b93237
--- /dev/null
+++ b/springframework-springfundamentals-project/conference-javaconfig/src/main/java/AppConfig.java
@@ -0,0 +1,25 @@
+import com.example.repository.HibernateSpeakerRepositoryImpl;
+import com.example.repository.SpeakerRepository;
+import com.example.service.SpeakerService;
+import com.example.service.SpeakerServiceImpl;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+public class AppConfig {
+
+    @Bean(name = "speakerService")
+    public SpeakerService getSpeakerService() {
+        // Using Constructor Injection
+        SpeakerServiceImpl service = new SpeakerServiceImpl(getSpeakerRespository());
+        // config service with repository (setter injection)
+//        service.setRepository(getSpeakerRespository());
+        return service;
+    }
+
+    @Bean(name = "speakerRepository")
+    public SpeakerRepository getSpeakerRespository() {
+        return new HibernateSpeakerRepositoryImpl();
+    }
+
+}
diff --git a/springframework-springfundamentals-project/conference-javaconfig/src/main/java/Application.java b/springframework-springfundamentals-project/conference-javaconfig/src/main/java/Application.java
new file mode 100644
index 0000000000000000000000000000000000000000..9ce5398561e49d4e92cb5b36bbfe31ac0e153f3d
--- /dev/null
+++ b/springframework-springfundamentals-project/conference-javaconfig/src/main/java/Application.java
@@ -0,0 +1,16 @@
+import com.example.service.SpeakerService;
+import com.example.service.SpeakerServiceImpl;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.annotation.AnnotationConfigApplicationContext;
+
+public class Application {
+    public static void main(String[] args) {
+        //Loads config into application
+        //Injects speaker repo bean into speaker service bean
+        ApplicationContext appContext = new AnnotationConfigApplicationContext(AppConfig.class);
+
+//        SpeakerService service = new SpeakerServiceImpl();
+        SpeakerService service = appContext.getBean("speakerService", SpeakerService.class);
+        System.out.println(service.findALl().get(0).getFirstName());
+    }
+}
diff --git a/springframework-springfundamentals-project/conference-javaconfig/src/main/java/com/example/model/Speaker.java b/springframework-springfundamentals-project/conference-javaconfig/src/main/java/com/example/model/Speaker.java
new file mode 100644
index 0000000000000000000000000000000000000000..da4cd10906cf8b91f5746feafa67628d683677fc
--- /dev/null
+++ b/springframework-springfundamentals-project/conference-javaconfig/src/main/java/com/example/model/Speaker.java
@@ -0,0 +1,22 @@
+package com.example.model;
+
+public class Speaker {
+    private String firstName;
+    private String lastName;
+
+    public String getFirstName() {
+        return firstName;
+    }
+
+    public void setFirstName(String firstName) {
+        this.firstName = firstName;
+    }
+
+    public String getLastName() {
+        return lastName;
+    }
+
+    public void setLastName(String lastName) {
+        this.lastName = lastName;
+    }
+}
diff --git a/springframework-springfundamentals-project/conference-javaconfig/src/main/java/com/example/repository/HibernateSpeakerRepositoryImpl.java b/springframework-springfundamentals-project/conference-javaconfig/src/main/java/com/example/repository/HibernateSpeakerRepositoryImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..bebc2a0aeb414568b9040e6752ce540bce463ade
--- /dev/null
+++ b/springframework-springfundamentals-project/conference-javaconfig/src/main/java/com/example/repository/HibernateSpeakerRepositoryImpl.java
@@ -0,0 +1,21 @@
+package com.example.repository;
+
+import com.example.model.Speaker;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class HibernateSpeakerRepositoryImpl implements SpeakerRepository {
+
+    @Override
+    public List<Speaker> findAll() {
+        List<Speaker> speakerList = new ArrayList<Speaker>();
+        Speaker speaker = new Speaker();
+        speaker.setFirstName("Deep");
+        speaker.setLastName("Bhuller");
+
+        speakerList.add(speaker);
+
+        return speakerList;
+    }
+}
diff --git a/springframework-springfundamentals-project/conference-javaconfig/src/main/java/com/example/repository/SpeakerRepository.java b/springframework-springfundamentals-project/conference-javaconfig/src/main/java/com/example/repository/SpeakerRepository.java
new file mode 100644
index 0000000000000000000000000000000000000000..d1bf862692c60d7e225d017edd464df9c727a78a
--- /dev/null
+++ b/springframework-springfundamentals-project/conference-javaconfig/src/main/java/com/example/repository/SpeakerRepository.java
@@ -0,0 +1,9 @@
+package com.example.repository;
+
+import com.example.model.Speaker;
+
+import java.util.List;
+
+public interface SpeakerRepository {
+    List<Speaker> findAll();
+}
diff --git a/springframework-springfundamentals-project/conference-javaconfig/src/main/java/com/example/service/SpeakerService.java b/springframework-springfundamentals-project/conference-javaconfig/src/main/java/com/example/service/SpeakerService.java
new file mode 100644
index 0000000000000000000000000000000000000000..d43601cac8ee3d92a9d85ca2d6ed8868daea42ae
--- /dev/null
+++ b/springframework-springfundamentals-project/conference-javaconfig/src/main/java/com/example/service/SpeakerService.java
@@ -0,0 +1,9 @@
+package com.example.service;
+
+import com.example.model.Speaker;
+
+import java.util.List;
+
+public interface SpeakerService {
+    List<Speaker> findALl();
+}
diff --git a/springframework-springfundamentals-project/conference-javaconfig/src/main/java/com/example/service/SpeakerServiceImpl.java b/springframework-springfundamentals-project/conference-javaconfig/src/main/java/com/example/service/SpeakerServiceImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..721d27780d8fb8f360d9587dc8ae502a17dfdd6a
--- /dev/null
+++ b/springframework-springfundamentals-project/conference-javaconfig/src/main/java/com/example/service/SpeakerServiceImpl.java
@@ -0,0 +1,25 @@
+package com.example.service;
+
+import com.example.model.Speaker;
+import com.example.repository.HibernateSpeakerRepositoryImpl;
+import com.example.repository.SpeakerRepository;
+
+import java.util.List;
+
+public class SpeakerServiceImpl implements SpeakerService {
+
+    private SpeakerRepository repository;
+
+    public SpeakerServiceImpl(SpeakerRepository repository) {
+        this.repository = repository;
+    }
+
+    @Override
+    public List<Speaker> findALl() {
+        return repository.findAll();
+    }
+
+    public void setRepository(SpeakerRepository repository) {
+        this.repository = repository;
+    }
+}
diff --git a/springframework-springfundamentals-project/conference-javaconfig/target/classes/AppConfig.class b/springframework-springfundamentals-project/conference-javaconfig/target/classes/AppConfig.class
new file mode 100644
index 0000000000000000000000000000000000000000..47c06828d4ad25d2fba631275d2f1025216aabe0
Binary files /dev/null and b/springframework-springfundamentals-project/conference-javaconfig/target/classes/AppConfig.class differ
diff --git a/springframework-springfundamentals-project/conference-javaconfig/target/classes/Application.class b/springframework-springfundamentals-project/conference-javaconfig/target/classes/Application.class
new file mode 100644
index 0000000000000000000000000000000000000000..7feb581cb365eb27c12b5b701c43e87be68e2787
Binary files /dev/null and b/springframework-springfundamentals-project/conference-javaconfig/target/classes/Application.class differ
diff --git a/springframework-springfundamentals-project/conference-javaconfig/target/classes/com/example/model/Speaker.class b/springframework-springfundamentals-project/conference-javaconfig/target/classes/com/example/model/Speaker.class
new file mode 100644
index 0000000000000000000000000000000000000000..c23510ec0a6208a43f637407eb663afa66420a8f
Binary files /dev/null and b/springframework-springfundamentals-project/conference-javaconfig/target/classes/com/example/model/Speaker.class differ
diff --git a/springframework-springfundamentals-project/conference-javaconfig/target/classes/com/example/repository/HibernateSpeakerRepositoryImpl.class b/springframework-springfundamentals-project/conference-javaconfig/target/classes/com/example/repository/HibernateSpeakerRepositoryImpl.class
new file mode 100644
index 0000000000000000000000000000000000000000..e6af71fbc5615b9dd0052362e15c9c0e0fe57985
Binary files /dev/null and b/springframework-springfundamentals-project/conference-javaconfig/target/classes/com/example/repository/HibernateSpeakerRepositoryImpl.class differ
diff --git a/springframework-springfundamentals-project/conference-javaconfig/target/classes/com/example/repository/SpeakerRepository.class b/springframework-springfundamentals-project/conference-javaconfig/target/classes/com/example/repository/SpeakerRepository.class
new file mode 100644
index 0000000000000000000000000000000000000000..58bd1fde045eda1edeef2d3219425fa60d6ca793
Binary files /dev/null and b/springframework-springfundamentals-project/conference-javaconfig/target/classes/com/example/repository/SpeakerRepository.class differ
diff --git a/springframework-springfundamentals-project/conference-javaconfig/target/classes/com/example/service/SpeakerService.class b/springframework-springfundamentals-project/conference-javaconfig/target/classes/com/example/service/SpeakerService.class
new file mode 100644
index 0000000000000000000000000000000000000000..a4702b7e891a602acc5b96cf0697fe403f7af123
Binary files /dev/null and b/springframework-springfundamentals-project/conference-javaconfig/target/classes/com/example/service/SpeakerService.class differ
diff --git a/springframework-springfundamentals-project/conference-javaconfig/target/classes/com/example/service/SpeakerServiceImpl.class b/springframework-springfundamentals-project/conference-javaconfig/target/classes/com/example/service/SpeakerServiceImpl.class
new file mode 100644
index 0000000000000000000000000000000000000000..a95f06ba62406f74e82acccd88b57ad11a45e6f9
Binary files /dev/null and b/springframework-springfundamentals-project/conference-javaconfig/target/classes/com/example/service/SpeakerServiceImpl.class differ