diff --git a/pom.xml b/pom.xml
old mode 100755
new mode 100644
index 9c813de8..7464334d
--- a/pom.xml
+++ b/pom.xml
@@ -40,9 +40,9 @@
         <spring.version>5.1.2.RELEASE</spring.version>
         <spring-data.version>2.1.2.RELEASE</spring-data.version>
 
-        <hibernate-validator.version>6.0.9.Final</hibernate-validator.version>
-        <aws-java-sdk.version>1.11.443</aws-java-sdk.version>
-        <junit.version>4.12</junit.version>
+        <hibernate-validator.version>6.1.0.Final</hibernate-validator.version>
+        <aws-java-sdk.version>1.11.515</aws-java-sdk.version>
+        <junit.version>4.13.1</junit.version>
         <mockito.version>2.23.0</mockito.version>
         <cdi.version>1.2</cdi.version>
         <slf4j-test.version>1.2.0</slf4j-test.version>
@@ -252,7 +252,7 @@
                 </plugin>
                 <plugin>
                     <artifactId>maven-surefire-plugin</artifactId>
-                    <version>2.20.1</version>
+                    <version>2.21.0</version>
                 </plugin>
                 <plugin>
                     <artifactId>maven-jar-plugin</artifactId>
@@ -362,7 +362,7 @@
             <plugin>
                 <groupId>org.jacoco</groupId>
                 <artifactId>jacoco-maven-plugin</artifactId>
-                <version>0.7.9</version>
+                <version>0.8.3</version>
                 <executions>
                     <execution>
                         <goals>
@@ -438,7 +438,7 @@
 			<plugin>
 				<groupId>com.github.spotbugs</groupId>
 				<artifactId>spotbugs-maven-plugin</artifactId>
-				<version>3.1.5</version>
+				<version>3.1.11</version>
 				<configuration>
 					<effort>Max</effort>
 					<!-- Reports all bugs (other values are medium and max) -->
diff --git a/src/main/java/org/socialsignin/spring/data/dynamodb/repository/config/DynamoDBMapperFactory.java b/src/main/java/org/socialsignin/spring/data/dynamodb/repository/config/DynamoDBMapperFactory.java
index 20486acc..8cb5e801 100644
--- a/src/main/java/org/socialsignin/spring/data/dynamodb/repository/config/DynamoDBMapperFactory.java
+++ b/src/main/java/org/socialsignin/spring/data/dynamodb/repository/config/DynamoDBMapperFactory.java
@@ -15,22 +15,23 @@
  */
 package org.socialsignin.spring.data.dynamodb.repository.config;
 
-import org.springframework.beans.factory.FactoryBean;
-import org.springframework.beans.factory.annotation.Autowired;
-
 import com.amazonaws.services.dynamodbv2.AmazonDynamoDB;
 import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapper;
 import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapperConfig;
+import org.springframework.beans.factory.FactoryBean;
+import org.springframework.beans.factory.annotation.Autowired;
 
 public class DynamoDBMapperFactory implements FactoryBean<DynamoDBMapper> {
 
-	private final AmazonDynamoDB amazonDynamoDB;
-	private final DynamoDBMapperConfig dynamoDBMapperConfig;
+	// fix issue #230
+	@Autowired
+	private AmazonDynamoDB amazonDynamoDB;
 
+	// fix issue #230
 	@Autowired
-	public DynamoDBMapperFactory(AmazonDynamoDB amazonDynamoDB, DynamoDBMapperConfig dynamoDBMapperConfig) {
-		this.amazonDynamoDB = amazonDynamoDB;
-		this.dynamoDBMapperConfig = dynamoDBMapperConfig;
+	private DynamoDBMapperConfig dynamoDBMapperConfig;
+
+	public DynamoDBMapperFactory() {
 	}
 
 	@Override
@@ -42,5 +43,4 @@ public DynamoDBMapper getObject() throws Exception {
 	public Class<?> getObjectType() {
 		return DynamoDBMapper.class;
 	}
-
 }
diff --git a/src/main/java/org/socialsignin/spring/data/dynamodb/repository/config/DynamoDBRepositoryConfigExtension.java b/src/main/java/org/socialsignin/spring/data/dynamodb/repository/config/DynamoDBRepositoryConfigExtension.java
index af5fae4b..6b604ece 100644
--- a/src/main/java/org/socialsignin/spring/data/dynamodb/repository/config/DynamoDBRepositoryConfigExtension.java
+++ b/src/main/java/org/socialsignin/spring/data/dynamodb/repository/config/DynamoDBRepositoryConfigExtension.java
@@ -15,9 +15,6 @@
  */
 package org.socialsignin.spring.data.dynamodb.repository.config;
 
-import java.util.HashMap;
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.socialsignin.spring.data.dynamodb.core.DynamoDBTemplate;
@@ -37,6 +34,11 @@
 import org.springframework.util.StringUtils;
 import org.w3c.dom.Element;
 
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Optional;
+import java.util.concurrent.ConcurrentHashMap;
+
 /**
  * @author Michael Lavelle
  * @author Sebastian Just
@@ -57,6 +59,8 @@ public class DynamoDBRepositoryConfigExtension extends RepositoryConfigurationEx
 
 	private BeanDefinitionRegistry registry;
 	private String defaultDynamoDBMappingContext;
+    private String dynamoDBMapperName;
+    private String dynamoDBMapperConfigName;
 
 	@Override
 	public String getRepositoryFactoryBeanClassName() {
@@ -76,7 +80,7 @@ public void postProcess(BeanDefinitionBuilder builder, AnnotationRepositoryConfi
 
 	/*
 	 * (non-Javadoc)
-	 * 
+	 *
 	 * @see org.springframework.data.repository.config.
 	 * RepositoryConfigurationExtensionSupport
 	 * #postProcess(org.springframework.beans
@@ -99,14 +103,13 @@ public void postProcess(BeanDefinitionBuilder builder, XmlRepositoryConfiguratio
 				defaultDynamoDBMappingContext = registerDynamoDBMappingContext(registry);
 			}
 			dynamoDBMappingContextRef = defaultDynamoDBMappingContext;
-
 		}
 		registerAndSetPostProcessingBeans(builder, registry, dynamoDBMappingContextRef);
 	}
 
 	private Map<String, String> dynamoDBTemplateCache = new HashMap<>();
 	private void postProcess(BeanDefinitionBuilder builder, String repositoryName, String amazonDynamoDBRef,
-			String dynamoDBMapperConfigRef, String dynamoDBOperationsRef, String dynamoDBMappingContextRef) {
+							 String dynamoDBMapperConfigRef, String dynamoDBOperationsRef, String dynamoDBMappingContextRef) {
 
 		if (StringUtils.hasText(dynamoDBOperationsRef)) {
 			builder.addPropertyReference("dynamoDBOperations", dynamoDBOperationsRef);
@@ -129,7 +132,16 @@ private void postProcess(BeanDefinitionBuilder builder, String repositoryName, S
 						.computeIfAbsent(getBeanNameWithModulePrefix("DynamoDBTemplate-" + dynamoDBRef), ref -> {
 							BeanDefinitionBuilder dynamoDBTemplateBuilder = BeanDefinitionBuilder
 									.genericBeanDefinition(DynamoDBTemplate.class);
+							// AmazonDynamoDB amazonDynamoDB, DynamoDBMapper dynamoDBMapper,
+							// DynamoDBMapperConfig dynamoDBMapperConfig
 							dynamoDBTemplateBuilder.addConstructorArgReference(dynamoDBRef);
+							dynamoDBTemplateBuilder.addConstructorArgReference(this.dynamoDBMapperName);
+
+							if (StringUtils.hasText(dynamoDBMapperConfigRef)) {
+								dynamoDBTemplateBuilder.addConstructorArgReference(dynamoDBMapperConfigRef);
+							} else {
+								dynamoDBTemplateBuilder.addConstructorArgReference(this.dynamoDBMapperConfigName);
+							}
 
 							registry.registerBeanDefinition(ref, dynamoDBTemplateBuilder.getBeanDefinition());
 							return ref;
@@ -137,10 +149,6 @@ private void postProcess(BeanDefinitionBuilder builder, String repositoryName, S
 			}
 
 			builder.addPropertyReference("dynamoDBOperations", dynamoDBOperationsRef);
-
-			if (StringUtils.hasText(dynamoDBMapperConfigRef)) {
-				builder.addPropertyReference("dynamoDBMapperConfig", dynamoDBMapperConfigRef);
-			}
 		}
 
 		if (!StringUtils.hasText(dynamoDBMappingContextRef)) {
@@ -149,7 +157,6 @@ private void postProcess(BeanDefinitionBuilder builder, String repositoryName, S
 				defaultDynamoDBMappingContext = registerDynamoDBMappingContext(registry);
 			}
 			dynamoDBMappingContextRef = defaultDynamoDBMappingContext;
-
 		}
 
 		builder.addPropertyReference("dynamoDBMappingContext", dynamoDBMappingContextRef);
@@ -157,7 +164,7 @@ private void postProcess(BeanDefinitionBuilder builder, String repositoryName, S
 	}
 
 	protected void registerAndSetPostProcessingBeans(BeanDefinitionBuilder builder, BeanDefinitionRegistry registry,
-			String dynamoDBMappingContextRef) {
+													 String dynamoDBMappingContextRef) {
 		String tableSynchronizerName = registerEntity2DynamoDBTableSynchronizer(registry, dynamoDBMappingContextRef);
 		builder.addPropertyReference("entity2DynamoDBTableSynchronizer", tableSynchronizerName);
 
@@ -168,7 +175,7 @@ protected void registerAndSetPostProcessingBeans(BeanDefinitionBuilder builder,
 
 	private final Map<String, String> entity2DynamoDBTableSynchronizerCache = new ConcurrentHashMap<>();
 	private String registerEntity2DynamoDBTableSynchronizer(BeanDefinitionRegistry registry,
-			String dynamoDBMappingContextRef) {
+															String dynamoDBMappingContextRef) {
 		assert registry != null;
 
 		return entity2DynamoDBTableSynchronizerCache.computeIfAbsent(dynamoDBMappingContextRef, ref -> {
@@ -184,8 +191,9 @@ private String registerEntity2DynamoDBTableSynchronizer(BeanDefinitionRegistry r
 	}
 
 	private final Map<String, String> dynamoDBMappingContextProcessorCache = new ConcurrentHashMap<>();
+
 	private String registerDynamoDBMappingContextProcessor(BeanDefinitionRegistry registry,
-			String dynamoDBMappingContextRef) {
+														   String dynamoDBMappingContextRef) {
 		assert registry != null;
 
 		return dynamoDBMappingContextProcessorCache.computeIfAbsent(dynamoDBMappingContextRef, ref -> {
@@ -220,21 +228,25 @@ private String registerDynamoDBMappingContext(BeanDefinitionRegistry registry) {
 
 	@Override
 	public void registerBeansForRoot(BeanDefinitionRegistry registry,
-			RepositoryConfigurationSource configurationSource) {
+									 RepositoryConfigurationSource configurationSource) {
 		super.registerBeansForRoot(registry, configurationSource);
 
 		// Store for later to be used by #postProcess, too
 		this.registry = registry;
 
-		BeanDefinitionBuilder dynamoDBMapperConfigBuiilder = BeanDefinitionBuilder
-				.genericBeanDefinition(DynamoDBMapperConfigFactory.class);
-		registry.registerBeanDefinition(getBeanNameWithModulePrefix("DynamoDBMapperConfig"),
-				dynamoDBMapperConfigBuiilder.getBeanDefinition());
+		// Fix issue #233
+		Optional dynamoDBMapperConfigRef = configurationSource.getAttribute("dynamoDBMapperConfigRef");
+		if (!dynamoDBMapperConfigRef.isPresent()) {
+			BeanDefinitionBuilder dynamoDBMapperConfigBuilder = BeanDefinitionBuilder
+					.genericBeanDefinition(DynamoDBMapperConfigFactory.class);
+			registry.registerBeanDefinition(getBeanNameWithModulePrefix("DynamoDBMapperConfig"),
+					dynamoDBMapperConfigBuilder.getBeanDefinition());
+		}
 
+		this.dynamoDBMapperName = getBeanNameWithModulePrefix("DynamoDBMapper");
 		BeanDefinitionBuilder dynamoDBMapperBuilder = BeanDefinitionBuilder
 				.genericBeanDefinition(DynamoDBMapperFactory.class);
-		registry.registerBeanDefinition(getBeanNameWithModulePrefix("DynamoDBMapper"),
-				dynamoDBMapperBuilder.getBeanDefinition());
+		registry.registerBeanDefinition(this.dynamoDBMapperName, dynamoDBMapperBuilder.getBeanDefinition());
 	}
 
 	protected String getBeanNameWithModulePrefix(String baseBeanName) {
@@ -245,5 +257,4 @@ protected String getBeanNameWithModulePrefix(String baseBeanName) {
 	protected String getModulePrefix() {
 		return "dynamoDB";
 	}
-
 }
diff --git a/src/test/java/org/socialsignin/spring/data/dynamodb/repository/config/DynamoDBMapperConfigTest.java b/src/test/java/org/socialsignin/spring/data/dynamodb/repository/config/DynamoDBMapperConfigTest.java
new file mode 100644
index 00000000..2d88bf8f
--- /dev/null
+++ b/src/test/java/org/socialsignin/spring/data/dynamodb/repository/config/DynamoDBMapperConfigTest.java
@@ -0,0 +1,96 @@
+/**
+ * Copyright © 2018 spring-data-dynamodb (https://github.com/derjust/spring-data-dynamodb)
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.socialsignin.spring.data.dynamodb.repository.config;
+
+import com.amazonaws.services.dynamodbv2.AmazonDynamoDB;
+import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapper;
+import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapperConfig;
+import org.junit.Test;
+import org.mockito.Mockito;
+import org.springframework.beans.factory.UnsatisfiedDependencyException;
+import org.springframework.context.annotation.AnnotationConfigApplicationContext;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+/**
+ * Test Issue #233 fix
+ */
+public class DynamoDBMapperConfigTest {
+
+	static class BaseTestConfig {
+		@Bean
+		public AmazonDynamoDB amazonDynamoDB() {
+			return Mockito.mock(AmazonDynamoDB.class);
+		}
+
+		@Bean
+		public DynamoDBMapper dynamoDBMapper() {
+			return Mockito.mock(DynamoDBMapper.class);
+		}
+	}
+
+	@Configuration
+	@EnableDynamoDBRepositories(dynamoDBMapperConfigRef = "customDynamoDBMapperConfig")
+	static class TestConfigWithDynamoDBMapperConfigRef extends BaseTestConfig {
+		@Bean("customDynamoDBMapperConfig")
+		public DynamoDBMapperConfig dynamoDBMapperConfig() {
+			return DynamoDBMapperConfig.DEFAULT;
+		}
+	}
+
+	@Configuration
+	@EnableDynamoDBRepositories
+	static class TestConfigWithoutDynamoDBMapperConfigRef extends TestConfigWithDynamoDBMapperConfigRef {
+	}
+
+	@Configuration
+	@EnableDynamoDBRepositories
+	static class TestConfigWithoutDynamoDBMapperConfigBean extends BaseTestConfig {
+	}
+
+	@Test
+	public void testConfigWithDynamoDBMapperConfigRef() {
+		AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(
+				TestConfigWithDynamoDBMapperConfigRef.class);
+
+		boolean containsBean = ctx.containsBean("customDynamoDBMapperConfig");
+		assertTrue(containsBean);
+	}
+
+	@Test(expected = UnsatisfiedDependencyException.class)
+	public void testConfigWithoutDynamoDBMapperConfigRef() {
+		AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(
+				TestConfigWithoutDynamoDBMapperConfigRef.class);
+
+		boolean containsBean = ctx.containsBean("customDynamoDBMapperConfig");
+		assertTrue(containsBean);
+	}
+
+	@Test
+	public void testConfigWithoutDynamoDBMapperConfigBean() {
+		AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(
+				TestConfigWithoutDynamoDBMapperConfigBean.class);
+
+		boolean containsBean = ctx.containsBean("customDynamoDBMapperConfig");
+		assertFalse(containsBean);
+
+		containsBean = ctx.containsBean("dynamoDB-DynamoDBMapperConfig");
+		assertTrue(containsBean);
+	}
+}