From 0fe419754eab9dce18b8185f5a7d3bb64d11178b Mon Sep 17 00:00:00 2001 From: Christian Frommeyer Date: Tue, 28 Jan 2020 09:02:34 +0100 Subject: [PATCH] #8 Don't use autowired or constructor injection with FactoryBeans --- .../config/DynamoDBMapperFactory.java | 24 ++++++++++--------- 1 file changed, 13 insertions(+), 11 deletions(-) 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 395c301d..c4665c18 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,26 +15,23 @@ */ package org.socialsignin.spring.data.dynamodb.repository.config; +import org.springframework.beans.BeansException; +import org.springframework.beans.factory.BeanFactory; +import org.springframework.beans.factory.BeanFactoryAware; 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; -public class DynamoDBMapperFactory implements FactoryBean { - - private final AmazonDynamoDB amazonDynamoDB; - private final DynamoDBMapperConfig dynamoDBMapperConfig; - - @Autowired - public DynamoDBMapperFactory(AmazonDynamoDB amazonDynamoDB, DynamoDBMapperConfig dynamoDBMapperConfig) { - this.amazonDynamoDB = amazonDynamoDB; - this.dynamoDBMapperConfig = dynamoDBMapperConfig; - } +public class DynamoDBMapperFactory implements FactoryBean, BeanFactoryAware { + private BeanFactory beanFactory; + @Override public DynamoDBMapper getObject() throws Exception { + AmazonDynamoDB amazonDynamoDB = beanFactory.getBean(AmazonDynamoDB.class); + DynamoDBMapperConfig dynamoDBMapperConfig = beanFactory.getBean(DynamoDBMapperConfig.class); return new DynamoDBMapper(amazonDynamoDB, dynamoDBMapperConfig); } @@ -43,4 +40,9 @@ public Class getObjectType() { return DynamoDBMapper.class; } + @Override + public void setBeanFactory(BeanFactory beanFactory) throws BeansException { + this.beanFactory = beanFactory; + } + }