这是一个架构问题。我有 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 简单地注入到我的控制器和视图中很方便,但我不确定它在较低级别上的效率如何,或者我是否缺少一些基本的东西。
感谢您分享您的体验!