有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    你要做的是重新发明缓存机制

    您可以考虑在Spring Cache抽象上{{CD1}},然后选择JCache(JSR-107)作为实现。