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