[英]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.accessKey
和cloud.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)
方法獲取credObj
, getAWSCredential(String user_name)
getAWSCredential
方法返回的cred
設置為credObj
。 現在,對象credObj
具有getAWSCredential
方法返回的值cred
。 現在,從ec2()
方法中,您可以調用credObj
並獲取存儲在其中的值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.