Dne středa 02 září 2009 17:14:52 danisevsky napsal(a): > 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?
volají se obě metody z jednoho threadu? (btw stejně bych asi cache udělal final a zajistil synchronizaci) tomáš