Sobes.tech
Junior — Middle

Mida tähendab ulatuse määratlus Springis singleton ja prototype väärtustega binade jaoks ning kuidas see mõjutab nende käitumist?

sobes.tech AI

Vastus AI-lt

Springis määrab nähtavuse (scope) valdkonna (domain), kui kaua ja kuidas on nähtav bean eksemplar.

  • singleton — see on vaikimisi valdkond. Iga kord, kui nõutakse sellise scope'iga bean'i, Spring tagastab sama eksemplari kogu konteineri elutsükli jooksul. See tähendab, et bean luuakse üks kord ja kasutatakse uuesti.

  • prototype — iga taotluse korral luuakse uus bean eksemplar. Spring ei halda nende bean'ide elutsüklit pärast nende loomist, seega iga getBean kõne tagastab uue objekti.

Mõju käitumisele:

  • Singleton bean'id säästavad ressursse ja pakuvad kõigile kasutajatele ühise oleku.
  • Prototype bean'id on kasulikud, kui iga kasutus jaoks on vaja uut sõltumatut olekuga eksemplari.

Näide:

@Component
@Scope("prototype")
public class MyPrototypeBean {
    // iga `getBean` kõne loob uue objekti
}

@Component
@Scope("singleton")
public class MySingletonBean {
    // üks objekt kogu konteinerile
}

Seega, scope valik mõjutab seda, kuidas ja millal objektid luuakse ning kui kaua nad rakenduses elavad.