Doen met baie ongebruikte bone in 'n lente Bean beduidende hulpbronne Konteks afval?

StackOverflow https://stackoverflow.com/questions/98320

  •  01-07-2019
  •  | 
  •  

Vra

My model laag is wat gebruik word deur 'n handvol van die verskillende projekte en ek wil graag 'n enkele XML Lente konfigurasielêer vir die model ongeag gebruik waarvan projek is om dit te gebruik.

My vraag is: Sedert nie al bone gebruik word in alle projekte moet ek mors hulpbronne om enige beduidende hoeveelheid as daar nie aangehaal? Ek is nie so seker hoe lui die lente is oor die laai van hulle, aangesien dit nooit 'n kwessie was tot nou toe.

Enige idees?

Was dit nuttig?

Oplossing

Geneem uit die lente Reference Manual :

  

Die verstek gedrag vir ApplicationContext implementering is om gretig pre-instansieer al Singleton bone by die begin. Pre-Instantiëring beteken dat 'n ApplicationContext gretig sal skep en al sy Singleton bone instel as deel van sy inisialisering proses. Oor die algemeen is dit 'n goeie ding, want dit beteken dat enige foute in die opset of in die omliggende omgewing onmiddellik sal ontdek (in teenstelling met moontlik ure of selfs dae in die ry).

     

Daar is egter tye wanneer hierdie gedrag is nie wat wou. As jy nie wil hê 'n Singleton boontjie om vooraf aangehaal wanneer die gebruik van 'n ApplicationContext, kan jy selektief hierdie beheer deur die nasien van 'n boontjie definisie as lui-geïnisialiseer. A lui-geïnisialiseer boontjie dui aan die IOK houer of 'n boontjie byvoorbeeld geskep moet word by die begin of wanneer dit die eerste keer aangevra.

     

Wanneer die instel van bone via XML, is dit lui laai beheer word deur die "lui-init 'skryf op die [boontjie element]; byvoorbeeld:

<bean id="lazy" class="com.foo.ExpensiveToCreateBean" lazy-init="true"/>

Maar, tensy jou bone gebruik om hulpbronne soos lêer slotte of databasis verbindings, ek sou nie te veel oor eenvoudige geheue oorhoofse as dit makliker is bekommerd dat jy hierdie een verstellings vir verskeie (maar verskillende) profiele hê.

Ander wenke

In bykomend tot die ander kommentaar: dit is ook moontlik om 'n hele konfigurasielêer spesifiseer om lui geïnisialiseer word, deur gebruik te maak van die 'standaard-lui-init' skryf op die <beans/> element; byvoorbeeld:

<beans default-lazy-init="true">
    <!-- no beans will be pre-instantiated... -->
</beans>

Dit is baie makliker as die toevoeging van die lazy-init kenmerk aan elke boontjie, as jy het 'n baie van hulle.

Deur verstek Lente bone is single en is aangehaal wanneer die aansoek konteks geskep word (by die begin). So neem aan jy het nie die verstek gedrag oorheers, dan 'n enkele geval van elke boontjie geskep sal word.

hang af van die voorwerpe.

Maar, ongebruikte kode is 'cruft en sal die koste van instandhouding te verhoog.

Dit is beter om die refs en klasse te verwyder. Jy kan altyd herstel van weergawe beheer as hulle later nodig is.

Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top