古いPetclinicの例を試していますが、SimpleJdbcClinicのvetsArrayListがセッションの存続期間中存在することに気付きました。セッションコンテキストに追加する注釈が表示されないため、リクエストに対してのみ存在する必要があるようです。誰かが私が理解していないことを指摘できますか?
vetsクラスは次のとおりです。@XmlRootElementpublic class Vets {
private List<Vet> vets;
@XmlElement
public List<Vet> getVetList() {
if (vets == null) {
vets = new ArrayList<Vet>();
}
return vets;
}
}
サービス:
@Service
@ManagedResource("petclinic:type=Clinic")
public class SimpleJdbcClinic implements Clinic, SimpleJdbcClinicMBean {
private SimpleJdbcTemplate simpleJdbcTemplate;
private SimpleJdbcInsert insertOwner;
private SimpleJdbcInsert insertPet;
private SimpleJdbcInsert insertVisit;
private final List<Vet> vets = new ArrayList<Vet>();
:
:
@Transactional(readOnly = true)
public Collection<Vet> getVets() throws DataAccessException {
synchronized (this.vets) {
if (this.vets.isEmpty()) {
refreshVetsCache();
}
return this.vets;
}
}
}
コントローラのマッピング:
@RequestMapping("/vets")
public ModelMap vetsHandler() {
Vets vets = new Vets();
vets.getVetList().addAll(this.clinic.getVets());
return new ModelMap(vets);
}
獣医リストが作成されると、それは複数の要求に耐えます。
ありがとう