JavaSpringBoot:一个@Component类,用于保存数据库表对象列表
我需要找到一个合适的解决方案,让Spring Boot@Component(singleton)类保存数据库表对象的列表,这些对象可以在应用程序的整个生命周期中访问。我需要根据参数获取特定语言列的值(可能有许多语言列)
我的想法是这样做:
@Component
public class CardTypeValueComponent {
private List<CardTypesTabModel> listOfCardTypes;
private CardTypesModelRepository cardTypesModelRepository;
private static final String UNKNOWN = "-";
@Autowired
public CardTypeValueComponent(CardTypesModelRepository cardTypesModelRepository) {
Assert.notNull(cardTypesModelRepository, "CardTypesModelRepository cannot be null");
this.cardTypesModelRepository = cardTypesModelRepository;
}
@PostConstruct
private void getAllCardTypesFromDb() {
this.listOfCardTypes = cardTypesModelRepository.findAll();
}
public String getCardTypeLanguageValue(int cardType, String language) {
String cardTypeLangValue = UNKNOWN;
for (CardTypesTabModel cardTypesTabModel : listOfCardTypes) {
if (cardTypesTabModel.getTypeId() == cardType && "spanish".equals(language)) {
cardTypeLangValue = cardTypesTabModel.getSpanishValue();
} else {
cardTypeLangValue = cardTypesTabModel.getEnglishValue();
}
}
return cardTypeLangValue;
}
}
在记住表对象列计数将来可能会增加的情况下,这是完成此类任务的正确方法吗
请原谅我的伪代码。谢谢
添加了更多详细信息: CardTypesTabModel实体类:
@Entity
public class CardTypesTabModel {
private int type;
private String englishValue;
private String spanishValue;
// other values, getters & setters
}
# 1 楼答案
你要做的是重新发明缓存机制
您可以考虑在Spring Cache抽象上{{CD1}},然后选择JCache(JSR-107)作为实现。