W przypadku gdy mamy jedną monolityczną aplikację śledzenie zdarzeń jest banalne. Najczęściej dorzucamy logger np. Slf4j i zapisujemy mniej lub bardziej krytyczne zdarzenia odbywające się w naszej aplikacji. Jeżeli coś zawiedzie to w logach wyszukamy coś co przypomina nam błąd i dzięki temu łatwo możemy przeanalizować co się stało. Stosunkowo łatwo w takich aplikacjach odnaleźć…
Tag: java
Pozbądź się ifów ze swojego kodu za pomocą polimorfizmu
Skoro pracujesz z językiem obiektowym to czemu nie piszesz obiektowo? Większość instrukcji warunkowych może zostać zastąpiona polimorfizmem. Jakie są zalety takiego rozwiązania oraz jak przeprowadzić refactoring brzydkiej metody pełnej różnych warunków?
Co tak na prawdę robi @Transactional?
Spróbujmy zapanować nad tym co się dzieje podczas używania różnych adnotacji w Springu. Jak to jest, że czasami @Transactional (i inne adnotacje) nie działają? Do czego przydaje się ThreadLocal? Jeżeli piszesz w Springu to uwierz mi – dotykasz tego każdego dnia. 🙂
Co się dzieje gdy używasz adnotacji @Inject/@Autowired?
Niektóre osoby mogą powiedzieć, że to wiedza niepotrzebna. Spotkałem kilku programistów, którzy mimo wieloletniego doświadczenia nie do końca wiedzieli jak to działa i jakoś z tym żyli. Ale co to za życie. 😛 Wydaje mi się, że znajomość tego jak tak na prawdę działa wstrzykiwanie zależności, chociażby w takim podstawowym stopniu, to wiedza obowiązkowa –…
Valhalla – własne typy prymitywne w Javie
W tym artykule chciałbym opisać jedną z ciekawszych zmian jakie nas czekają w nowej Javie, a dokładniej mowa o projekcie Valhalla prowadzonym przez OpenJDK. O samym projekcie w społeczności słyszy się już od jakiegoś czasu, bo od ok. 2014 roku. Coś tam o oszczędzaniu pamięci, coś o przyspieszeniu… Ale o co tak na prawdę chodzi?…
Czemu czasami porównanie obiektu typu Integer za pomocą „==” działa?
Dosyć popularny błąd nowicjuszy – porównywanie dwóch obiektów typu Integer za pomocą „==”. Ale okazuje się, że tak napisany kod czasami działa poprawnie.
Czemu Service service = new ServiceImpl() jest zazwyczaj głupie
Czy rzeczywiście interfejsy powinny być zawsze i wszędzie? Jakie są zalety i wady obu rozwiązań? Czy w przypadku obiektów zarządzanych przez kontener Spring jest jakaś różnica?