接口实现中有以下方法,该方法由控制器调用。
@Override
public String getCard(Request request, String amount) {
String card = null;
List<Card> cards = createCard(request, amount); // THIS IS THE CALL
card = <API>.getDetails(request, cards);
return card;
}
private List<Card> createCard(Request request, String amount) {
List<Card> payment = new ArrayList<>();
. . .
payment.add(card details);
return payment;
}
我需要在控制器中获取列表List<Card> cards
,但getCard仅返回卡。每次,当我们调用私有方法“ createCard”时,它都会创建卡并将其存储到列表中。有什么方法可以在不创建卡片的情况下获得列表吗?
答案 0 :(得分:1)
以下是实现此目的的示例代码:
@Configuration
public class AppConfig {
@Bean("cardList")
@Scope(value = ConfigurableBeanFactory.SCOPE_SINGLETON)
public List<Card> getInstance() {
return new ArrayList<Card>();
}
}
只要您想使用代码,只需使用
@Service
class CreateCard{
@Autowired
private List<Card> cardList;
private List<Card> createCard(Request request, String amount) {
if(!cardList.empty())cardList.clear(); //use this to clear the cardList for previous data
cardList.add(card details);
return payment;
}
}
这将一次创建List<Card>
个实例,并通过在整个应用程序中注入相同的实例来每次使用@Autowired
来使用它。
答案 1 :(得分:1)
您可以将代码设计为具有单独的类Account
。 (您可以更改此名称,这是我能想到的最好的方法)
class Account {
private List<Card> cards;
public Card() {
this.payment = new ArrayList<>();
}
// retrieve all cards
public List<Card> getCards() {
return cards;
}
// create card and add to list
void createCard() {
// alter this as per your requirement
payment.add("");
}
}
现在,使用此功能,您已经将2种功能(即创建和检索)分别分为2个单独的方法createCard()
和getCards()
。