簡體   English   中英

spring-config.xml中用於第三方庫的Bean

[英]Beans for third party library in spring-config.xml

我有一堂課,看起來像下面

@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和構建器實例。 寧願將它們作為豆類注入。 該怎么辦?

<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和工廠方法的Constructor-arg的示例。 不知道如何在這里使用它。

您應該能夠使用@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,以使用注入的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);
    }
}

由於您已經在應用程序上下文xml中添加了<context:component-scan base-package="com.tarkshala"/> ,因此從ConfigurationAnnotationExample類創建bean不需要任何其他操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM