metoda initialize se opravdu vola pri startu aplikace a metoda getFromCache
az dlouho potom.

Dne 2. září 2009 17:35 Tomas Hubalek <[email protected]> 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:* [email protected] [mailto:[email protected]] *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
>
>

Odpovedet emailem