2016-11-28 3 views
-2

Ich weiß, wenn ich nicht den Standardkonstruktor in einer Feder Daten implementieren eine Ausnahme wird geworfen werden, tatsächlich habe ich die gleiche Ausnahme konfrontiert, wenn ich Datenbanken arbeiten muss. Ich verstehe den Grund nie. Bitte geben SieWarum der Standardkonstruktor in Spring-Daten zur Verfügung gestellt werden muss

+1

Bitte geben Sie einen relevanten Code ein. –

+2

weil Spring in der Lage sein muss, eine Instanz Ihrer Klasse zu erstellen und die Variablen über Reflektion oder Setter zu setzen. Wenn Sie keinen Standardkonstruktor zur Verfügung stellen, gibt es keine saubere Möglichkeit für das Framework, eine Instanz zu erstellen, denn welche Werte sollen sie übergeben? – luk2302

Antwort

3

Zuerst, für die Klarheit, ist es nicht die default constructor (Sie implementieren nie explizit den Standardkonstruktor, deshalb heißt es ein Standard), es ist der Zero-Parameter-Konstruktor. (Z. B. diejenige, die Class#newInstance aufrufen würde.)

Sie müssen es in den meisten Object/Relational Mappers implementieren, da sie zuerst das Objekt (mit dem Zero-Parameter-Konstruktor) erstellen und ihm dann seine einzelnen Feldwerte zuweisen.

Having said that, wenn Sie irgendwelche Konstrukteuren nicht implementieren, dann wird der Standard-Konstruktor der Compiler für die meisten OR Mapper ausreichend liefert sein sollte (ich habe Daten Feder nicht verwendet). Standardmäßig ist es ein Zero-Parameter-Konstruktor mit der gleichen Zugänglichkeit wie die Klasse. Wenn Sie jedoch Konstruktoren implementieren, erstellt der Compiler nicht den Standard für Sie, und Sie müssen den Zero-Parameter-Konstruktor selbst bereitstellen.

Verwandte Themen