我有一个如下所示的类(class)
@Component
public class BillDAO {
private DynamoDBMapper dynamoDBMapper;
public void create(BillDO billDO) {
AmazonDynamoDBClientBuilder builder = AmazonDynamoDBClientBuilder.standard().withRegion(Regions.AP_SOUTH_1);
DynamoDBMapper dynamoDBMapper = new DynamoDBMapper(builder.build());
dynamoDBMapper.save(billDO);
}
}
基本上,我不想每次调用 create 方法时都构造 dynamoDBMapper 和构建器实例。更喜欢将它们作为 bean 注入(inject)。可以做什么?
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<context:component-scan base-package="com.tarkshala" />
</beans>
我确实找到了一些将构造函数参数用于bean和工厂方法的示例。不知道如何在这里使用它。
最佳答案
您应该能够使用 @Configuration 注释来执行此操作。以下是 @Configuration 实现的代码示例,用于创建 AmazonDynamoDBClientBuilder 和 DynamoDBMapper 作为 Spring bean 类。
package com.tarkshala;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class ConfigurationAnnotationExample {
@Bean
public AmazonDynamoDBClientBuilder getAmazonDynamoDBClientBuilder() {
return AmazonDynamoDBClientBuilder.standard().withRegion(Regions.AP_SOUTH_1);
}
@Bean
public DynamoDBMapper getDynamoDBMapper(final AmazonDynamoDBClientBuilder builder) {
return new DynamoDBMapper(builder.build());
}
}
这是您修改后的 BillDAO,以使用注入(inject)的 DynamoDBMapper。
package com.tarkshala;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Component
public class BillDAO {
private DynamoDBMapper dynamoDBMapper;
@Autowired
public BillDAO(final DynamoDBMapper dynamoDBMapper) {
this.dynamoDBMapper = dynamoDBMapper;
}
public void create(BillDO billDO) {
dynamoDBMapper.save(billDO);
}
}
由于您已经添加了 <context:component-scan base-package="com.tarkshala"/>
在您的应用程序上下文 xml 中,无需再从 ConfigurationAnnotationExample 类创建 bean。
关于java - spring-config.xml 中第三方库的 Bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50145190/