我需要找到一个适当的解决方案,以使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
}
您要做的是重新发明缓存机构。
您可以考虑在春季高速缓存抽象http://docs.spring.io/spring/docs/current/spring-framework-reference/html/cache.html
上继电器,然后选择JCACHE(JSR-107)作为实现。