2009-05-20 17 views
15

Próbuję użyć Spring po raz pierwszy w aplikacji. Ogólny problem, który pojawia się wielokrotnie, to jak debugować Spring. Struktura jest ciężka, więc tradycyjne debugowanie kodu wydaje się bezowocne. Nie mam pojęcia, jak rozwiązać problem, nie włączając dzienników poziomów debugowania (których brakuje) i skanując.Wskazówki lub narzędzia do debugowania aplikacji Spring?

Czy są jakieś ogólne wskazówki lub narzędzia, które pomogą w debugowaniu Spring?

+0

Jeśli ktoś jest zainteresowany pomocą w konkretnym problemie, który mam, opublikowałem go tutaj http://stackoverflow.com/questions/888581/fixing-null-entitymanger-in-spring-mvc-application. To pytanie bardziej polega na tym, że pomagam mi wymyślać rzeczy w przyszłości, ucząc mnie łowić tak, jak to było. –

+0

zobacz moją odpowiedź na poprzednie pytanie. – toolkit

Odpowiedz

0

Generalnie po prostu używam debuggera java w czasie zaćmienia - działa dobrze na większości klas. Niektóre klasy są pakowane w kompilację/środowisko wykonawcze przez zmiany w kodach bajtów - dla nich zazwyczaj nie można umieszczać punktów przerwania w metodach, jednak można ustawić punkt przerwania przy wprowadzaniu metody.

Jeśli masz bardzo szczególną sytuację, być może powinieneś nieco rozwinąć swoje pytanie.

Generalnie nie mam problemu z poziomami rejestrowania - co według Ciebie jest z nimi nie tak?

+0

Cóż, starałem się zachować to ogólne, ale do najnowszego wydania próbuję debugować menedżer wartości null. Rejestrowanie nie dostarcza mi żadnych użytecznych informacji, a przynajmniej nie wszystko, co na mnie patrzy i nie można naprawdę ustawić punktów przerwania na adnotacjach. –

+0

Podpowiedź, że nie można umieszczać punktów przerwania w ciałach metod niektórych metod (w moim przypadku metody wprowadzania kontrolera), ale można wstawić punkt przerwania w pozycji metody, był naprawdę użyteczny. (To doprowadzało mnie do szału, że debugowanie wydawało się działać w niektórych miejscach, ale nie w innych podczas debugowania w NetBeans). – anre

3

Nie sądzę, że debugowanie w Springu powinno być czymkolwiek innym od jakiegokolwiek innego scenariusza debugowania.

Z jakich aspektów wiosny korzystasz? Jeśli używasz zastrzyku zależności właściwie, to nie spodziewałbym się żadnych problemów.

Jednakże, jeśli dynamicznie analizujesz ziarna za pomocą ich nazwy (w środowisku wykonawczym, używając ApplicationContext.getBean()), to widzę, że spowoduje to problemy z przewidywaniem przepływu kontroli itd., I sugerował byś powrócił do IoC.

EDYCJA: Dobrze jest mieć dostępny źródłowy kod źródłowy. Jest dobrze przygotowany i czytelny, a zatem może być używany podczas debugowania.

+1

Używam sprężyny MVC z wtryskiem zależności. Używanie go "właściwie" jest problemem. W jaki sposób możesz debugować iniekcję zależności? –

+0

Chciałbym a) użyć zastrzyków zależności od konstruktora b) utworzyć instancję, a następnie sprawdzić, co wstrzyknięto w konstruktory komponentów bean. Debugujesz program w sensie statycznym - czyli w jaki sposób został on skonstruowany? –

6

Jeśli korzystasz z Eclipse, to zdobądź Spring IDE (dostępne z Eclipse Marketplace w menu Pomoc Eclipse). Zapewni to uzupełnianie kodu, wizualizację komponentu i szybkie łączenie z plikami konfiguracyjnymi.

+0

Nie wiem, czy licencja została zmieniona od czasu udzielenia pierwszej odpowiedzi, jednak licencja SpringSource Tool Suite pozwala na bezpłatne korzystanie tylko w celach "nieprodukcyjnych z wewnętrznych operacji biznesowych, rozwoju, oceny i edukacji Licencjobiorcy". – Brian

+0

Właśnie patrzyłem na jedno z oryginalnych postów ze Springa z maja 2009, które ogłosiło, że STS będzie darmowe dla * wszystkich * celów rozwojowych. Tak więc nie wiem, jak fazy rozwoju i produkcji różnią się w ich umysłach. – Brian

+0

Link nieaktualny :( –

0

Stan na 09/2011 (Wersja: 2.6.1.RELEASE, Identyfikator kompilacji: 201105041000) prawdziwą irytacją jest fakt, że debugger nie zatrzymuje się w zamknięciach, więc należy pamiętać o umieszczeniu punktu przerwania wewnątrz te, które chcesz zbadać; to jest w porządku, ponieważ "prawie" idzie do innej klasy, której dużo czasu nie ma znaczenia, ale kiedy to robi, musisz o tym pamiętać.

Powiązane problemy