Spring - singleton beana
danisevsky
danisevsky na gmail.com
Středa Září 2 17:45:11 CEST 2009
metoda initialize se opravdu vola pri startu aplikace a metoda getFromCache
az dlouho potom.
Dne 2. září 2009 17:35 Tomas Hubalek <Tomas.Hubalek na onsemi.com> napsal(a):
> Podle me ji nikdo nenulluje, ale metoda initialize se zavola jindy, nez
> si myslis. V tomto smyslu je IMHO debugger nanic, doporucuju dat vypis do
> initialize() a do getFromCache() na uvidis.
>
> Tom
>
> ------------------------------
> *From:* konference-bounces na java.cz [mailto:konference-bounces na java.cz] *On
> Behalf Of *danisevsky
> *Sent:* Wednesday, September 02, 2009 8:15 AM
> *To:* Java
> *Subject:* Spring - singleton beana
>
> Ahoj, narazil jsem podle mne na zajimavou vec. Mam definovanou beanu:
>
> <bean id="someCache" class="cz.somepackage.SomeCache"
> init-method="initialize" autowire="byType" />
>
> zjednoduseny kod beany:
>
> public class SomeCache {
>
> private Map<String, List<String>> cache;
>
> /**
> * Provede inicializaci.
> */
> @Transactional
> public void initialize() {
> cache = new HashMap<String, List<String>>();
> putSomethigToCache(); //metoda neco z DB vlozi do cache
> }
>
> public final List<String> getFromCache(String someId) {
> return cache.get(someId);
> }
>
> }
>
> Co me prekvapilo, ze radek "return cache.get(someId);" vyhodi NPE vyjimku,
> ze objekt cache je null. Pritom vim bezpecne (mel jsem tam breakpoint), ze
> metoda initialize() byla pri startu aplikace zavolana.
> Myslel jsem, ze defaultne jsou Spring beany singletony, tedy jedna instance
> pro celou aplikaci. Nechapu, jak promenna cache muze byt null, kdyz v cele
> tride SomeCache nikde zadnej takovej kod, kterej by ji nuloval neni. Mohl by
> mi to prosim nekdo vysvetlit?
> Diky
>
>
------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://amaio.cz/pipermail/konference/attachments/20090902/2e070a5b/attachment.htm>
Další informace o konferenci Konference