1

这是一个架构问题。我有 Spring MVC Web 应用程序,它包含十几个很少更改但经常用于多对一关系的集合,并用于填充设置这些属性值的下拉选择。(例如:国家、地区、状态类型等)。

在性能和内存使用方面,应用程序应该如何使这些集合可用?

目前我有一个单例包装类,如下所示:

@Component("collectionWrapper")
public class CollectionWrapper {
    Map<Integer, Country> countries;
    Map<Integer, User> users;
    Map<Integer, Office> offices;
    Map<Integer, Status> statuses
    DAOService daoService;

    public CollectionWrapper() {}

    @Autowired(required=true)
    public CollectionWrapper(DAOService daoService) {
        this.daoService=daoService;
        loadCountriesFromDao();
        loadUsersFromDao();
        loadOfficesFromDao();
        loadStatusesFromDao();
    }

    public void loadCountriesFromDao() {
        countries=daoService.getCountries();
    }

    // etc...
}

例如,在其中一个集合中的项目发生更改的极少数情况下,负责进行更改的控制器调用collectionWrapper.loadCountriesFromDao()

最后,应用程序处理的主要对象具有映射到这些“参考对象”的属性,如下所示:

@Entity
public class Event {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name="id", nullable = false)
    private Integer id;

    @ManyToOne
    @JoinColumn
    private Office office;

    etc...
}

所以基本上我想知道这是否是这样做的正确方法。将 collectionWrapper 简单地注入到我的控制器和视图中很方便,但我不确定它在较低级别上的效率如何,或者我是否缺少一些基本的东西。

感谢您分享您的体验!

4

0 回答 0