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