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