Patres
Patres
89
#java #programowanie #spring
Mireczki, jakiś czas temu przygotowałem małą prezentację dla zespołu o tym jak działa Spring pod spodem, czym jest proxy, jak zaimplementować @Autowired, @Transactiona itp. Zrobiłem to, ponieważ czesto widziałem błędy, że "@Transactional nagle przestaje działać i dzieje sią jakaś magia". Postanowiłem się zebrać to wszystko w jednym i stworzyłem repozytorium,

Opisałem krok po kroku jak zaimplementować taki framework:
- jak zaimplementować dependency injection
- czym jest proxy
- jak stworzyć i użyć własnych adnotacje
- co i dlaczego jest potrzebne, aby adnotacje e proxy działały

Każdy package zawiera krok, który opisany jest w readme. Jeżeli chcecie zobaczyć tylko działajacy framework to zapraszam do kroku 7

Link do repo: https://github.com/Patresss/Java-Own-Framework---step-by-step

Jeżeli macie jakieś uwagi/pytania/sugestie to dajcie znać!

  • Najlepsze
  • Wszystkie komentarze
PanLisek
PanLisek
@Patres: Dzięki! przyda sie :)
Patres
Patres Autor
3
@LazyInitializationException @Ostrzewtlumie @GG99 @tekon @PanLisek @Xysz @kto3
Dzięki wszystkim za dobre słowa! Naprawdę nie spodziewałem się tak pozytywnego odzewu. Gdybyście woleli to w wersji wideo, to dzisiaj uczestniczyłem w JUG Bydgoszcz w którym zaprezentowałem właśnie ten temat:
Ostrzewtlumie
@Patres w końcu quality content na tagu #gruparatowaniapoziomu
kto3
kto3
2
@Patres: widać napracowanko ( ͡° ͜ʖ ͡°) jakby każdy się tak przygotowywał do prezentacji w firmach to świat byłby lepszym światem. Tak trzymaj Mirku
GG99
GG99
1
@Patres: Dzięki wielkie. Tego potrzebowałem
tekon
tekon
1
@Patres: świetna robota! Dzięki Mirek!
Xysz
Xysz
Xysz
1
@Patres: nawet jesli mi sie to nie przyda - dzieki, w imieniu wszystkich.
SiemkaKolego
SiemkaKolego
@Patres: dzięki! (taktyczna komentarz do obejrzenia na później :D)
Stanislavv
@Patres: Dzięki za materiał, sporo wyjaśnił :)
Nasunęło mi się kilka pytań, może znałbyś odpowiedź.
1. Czy proxy w springu tworzone jest dla każdego beana? Jeśli nie to jak sprawdzić czy dana klasa ma utworzone proxy przez springa? O co mi chodzi? Otóż stworzyłem sobie dwa beany, do pierwszego wstrzyknąłem drugi i podczas debugu nie miałem ozaczenia w stylu MyClass$$EnhancerBySpringCGLIB, a używam spring boota 2.5
2. Pytanie do kroku 2, ponieważ piszesz, że:
Patres
Patres Autor
0
@Stanislavv
1. Prozy jest tworzone kiedy hets to wymagane. Np bawiłem się w Springu i też zauważyłem że mój jeden bean nie był proxy. Jednak gdy dodałem @Cachable to proxy się utworzyło bo był do tego powód (obsługa cache)
2. Intellij Cię ostrzeże przed takimi rzeczami. I tak w finał nie zadziała - zignoruje adnotacje
3. Wynika to z tego że dynamic proxy działa na interface, a interface ma publiczne
Patres
Patres Autor
0
@Stanislavv co do 3 to dodatkowo musi być to publiczna metoda, bo innej nie można zawołaćbjej w nie swoim beanie. Jak wspominałem, aby adnotacją działała musi przejść przez proxy. Czyli być wywołana z innego miejsca (nie w tym samym beanie). Nie można tego zrobić gdy metoda jest prywatna
Patres
Patres Autor
0
@Stanislavv jeszcze jedno co do 3. Sam się o tym przekonasz jak pobierzesz moje repo i zmienisz metodę na prywatną. W debugu wszystko zobaczyć (albo nawet bez debugo, bo możesz nie uruchomisz takiego kodu) ;)
Stanislavv
@Patres: Dzięki za odpowiedź, teraz jest wszystko jasne :)