簡體   English   中英

如何在不同的類中使用相同的對象及其值

[英]How to use same object with its value in different class

這里我有一個getAWSCredential方法,它返回帶有一些值的cred

@Override
    public AWSCredentialDTO getAWSCredential(String user_name) {
        AWSCredentialDTO cred= (AWSCredentialDTO) entityManager.createNativeQuery("select * from aws_user_credentials a where a.user_name=:userName",AWSCredentialDTO.class)
        .setParameter("userName", user_name).getSingleResult();
        return cred;

    }

在這里,我還有一個服務ec2 ,我需要在之前的方法中使用cred返回的值。

private AmazonEC2 ec2;

    public AmazonEC2 ec2() {
        BasicAWSCredentials awsCreds = new BasicAWSCredentials(aws_access_key_id,
                aws_secret_access_key);
        return AmazonEC2ClientBuilder.standard().withCredentials(new AWSStaticCredentialsProvider(awsCreds))
                .withRegion(Regions.AP_SOUTH_1).build();
    }

上述兩種方法都是單獨的類。 首先,我將運行getAWSCredential ,然后我將調用ec2 ,我需要使用cred的值。 任何人都可以建議我如何實現這一目標? 這是一個spring boot應用程序。

如果憑據是全局的或在上下文中,您可能希望使用DependencyInjection,您可以創建一個bean,該bean可以存儲憑據,也可以創建EC2實例作為代理,以便在用戶會話的上下文中訪問它。

請指定您是否有一個用戶名/密碼,或者您有多個用戶名/密碼,並且需要使用用戶名或其他用戶提供不同的請求。

如果您有一個,您可以創建一個API密鑰並在application.properties設置它。 您可以使用cloud.aws.credentials.accessKeycloud.aws.credentials.secretKey

您必須創建包含getAWSCredential的類的spring bean,並在需要它的類中自動裝配它。 請查看下面的示例代碼。

@Component
public class AmazonUtil {
    ...

    @Override
    public AWSCredentialDTO getAWSCredential(String user_name) {
        AWSCredentialDTO cred= (AWSCredentialDTO) entityManager.createNativeQuery("select * from aws_user_credentials a where a.user_name=:userName",AWSCredentialDTO.class)
        .setParameter("userName", user_name).getSingleResult();
        return cred;
    }
}

@Component
public class Test {
    @Autowired
    private AmazonUtil amazonUtil;

    public AmazonEC2 ec2(String userName) {
        AWSCredentialDTO credsDto = amazonUtil.getAWSCredential(userName);

        BasicAWSCredentials awsCreds = ...construct using credsDto

        return AmazonEC2ClientBuilder.standard().withCredentials(new AWSStaticCredentialsProvider(awsCreds))
                .withRegion(Regions.AP_SOUTH_1).build();
    }
}

創建一個單獨的類,說ClassCred並在同一個類ClassCred credObj = new ClassCred()ClassCred創建一個對象。 getAWSCredential(String user_name)方法獲取credObjgetAWSCredential(String user_name) getAWSCredential方法返回的cred設置為credObj 現在,對象credObj具有getAWSCredential方法返回的值cred 現在,從ec2()方法中,您可以調用credObj並獲取存儲在其中的值。

暫無
暫無

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

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