2009-05-20 12 views
15

Ich versuche Spring zum ersten Mal in einer Anwendung zu verwenden. Das generelle Problem, das immer wieder auftaucht, ist das Debuggen von Spring. Das Framework ist schwer konfigurierbar, so dass das traditionelle Code-Debugging erfolglos erscheint. Ich habe keine wirkliche Idee, wie man sich um die Fehlersuche kümmert, bevor man die Debugging-Level-Logs (die fehlen) einschaltet und durchsucht.Tipps oder Tools zum Debuggen von Federanwendungen?

Gibt es allgemeine Tipps oder Tools zur Unterstützung von Spring-Debugging?

+0

Wenn jemand an dem spezifischen Problem interessiert ist, das ich habe, habe ich es hier http://stackoverflow.com/questions/888581/fixing-null-entitymanger-in-spring-mvc-application veröffentlicht. Bei dieser Frage geht es mehr darum, mir in der Zukunft zu helfen, Dinge herauszufinden, und mir beizubringen, sozusagen zu fischen. –

+0

sehe meine Antwort auf Ihre vorherige Frage. – toolkit

Antwort

0

Ich benutze in der Regel nur den Java-Debugger in Eclipse - es funktioniert gut für die meisten Klassen. Einige Klassen werden bei der Kompilierung/Laufzeit durch Bytecode-Änderungen eingekapselt - für diese können Sie in der Regel keine Haltepunkte in Methoden setzen, Sie können jedoch einen Haltepunkt beim Methodeneintrag setzen.

Wenn Sie eine sehr spezifische Situation haben, sollten Sie vielleicht ein wenig in Ihrer Frage ausarbeiten.

Ich bin im Allgemeinen auch in Ordnung mit den Logging-Ebenen - was denkst du ist falsch mit ihnen?

+0

Nun, ich habe versucht, dies generisch zu halten, aber für das letzte Problem versuche ich, einen Null-Entity-Manager zu debuggen. Die Protokollierung gibt mir keine nützlichen Informationen oder zumindest nichts, was bei mir herausragt, und Sie können nicht wirklich Haltepunkte für Anmerkungen setzen. –

+0

Der Hinweis, dass Sie keine Breakpoints in Methodenkörper einiger Methoden einfügen können (in meinem Fall Eingabemethoden eines Controllers), aber Sie können stattdessen einen Breakpoint am Methodeneintrag setzen, der wirklich nützlich war. (Es hat mich verrückt gemacht, dass das Debuggen an einigen Stellen funktioniert, aber nicht an anderen, während es in NetBeans debuggt). – anre

3

Ich glaube nicht, Spring-Debugging sollte anders als jedes andere Debugging-Szenario sein.

Welche Aspekte von Spring verwenden Sie? Wenn Sie die Abhängigkeitsinjektion richtig verwenden, würde ich keine Probleme erwarten.

Wenn Sie jedoch Bohnen über ihren Namen dynamisch auflösen (zur Laufzeit mit ApplicationContext.getBean()), kann ich sehen, dass Sie Probleme bei der Antizipierung des Steuerungsflusses usw. haben werden und würde vorschlagen, dass Sie Ihren IoC erneut aufrufen.

EDIT: Es ist ziemlich nützlich, den Spring-Quellcode verfügbar zu haben. Es ist gut zusammengestellt und gut lesbar und daher möglicherweise nützlich beim Debuggen.

+1

Ich verwende Feder MVC mit Abhängigkeitsinjektion. Es "richtig" zu verwenden ist das Problem. Wie geht es mit dem Debuggen der Abhängigkeitsinjektion? –

+0

Ich würde a) Konstruktor Abhängigkeitsinjektionen verwenden b) instanziieren Sie Ihr Framework und dann prüfen, was Sie in Ihre Bean-Konstruktoren injiziert haben. Sie debuggen das Programm in einem statischen Sinn - d. H. Wie wurde es konstruiert? –

6

Wenn Sie Eclipse verwenden, dann greifen Sie auf die Spring IDE (verfügbar über Eclipse Marketplace im Hilfe-Menü von Eclipse) zu. Dies bietet Code-Vervollständigung, Bean Visualisierung und Hot-Linking zu Ihren Konfigurationsdateien.

+0

Ich weiß nicht, ob die Lizenz geändert wurde, seit diese Antwort zum ersten Mal zur Verfügung gestellt wurde. Die SpringSource Tool Suite-Lizenz erlaubt jedoch die kostenlose Nutzung nur für "Nicht-Produktionszwecke des internen Geschäftsbetriebs des Lizenznehmers, Entwicklung, Evaluierung und Schulung". – Brian

+0

Ich habe gerade einen der ursprünglichen Posts vom Frühling vom Mai 2009 angeschaut, der verkündete, dass STS für * alle * Entwicklungszwecke frei sein würde. Ich weiß also nicht, wie sich die Entwicklungs- und Produktionsphasen in ihren Köpfen unterscheiden. – Brian

+0

Link veraltet :( –

0

Stand 09/2011 (Version: 2.6.1.RELEASE, Build Id: 201105041000) ist ein echter Ärger die Tatsache, dass der Debugger nicht innerhalb von Closures stoppt, also muss man daran denken, einen Breakpoint in den diejenigen, die Sie untersuchen möchten; das ist in Ordnung, da es "fast" zu einer anderen Klasse geht, die viel Zeit nicht ausmacht, aber wenn es so ist, muss man sich daran erinnern.

Verwandte Themen