0

古い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);
  }

獣医リストが作成されると、それは複数の要求に耐えます。

ありがとう

4

1 に答える 1