2016-04-21 8 views
0

Ich habe eine Helfer-Klasse, die eine PDF für meine API-Anfrage generiert.Ich bin neu im Frühjahr (bin mit Spring-Boot), ich möchte strenge Verpackungsstruktur folgen.Wo Helfer Klassen im Frühjahr mvc

Ich bin verwirrt in Bezug auf: -

1.What Paketnamen soll ich verwenden. zB: com.abx.myapp.helper?

2. Welche Art von Namenskonvention sollte ich für diese Hilfsklassen befolgen?

Antwort

1

Es hängt von der Projektstruktur ab, der Sie folgen werden. Ich folge in der Regel diese Art von Projektstrukturen:

1. eg.com.myapp 
├─── service 
│ ├──── UserService.java 
│ └──── PdfService.java 
├─── controller 
│ ├──── UserController.java 
│ └──── PdfController.java 
└─── util 
    ├──── PdfUtils.java 
    └──── UserDetailsVerifier.java 

2. eg.com.myapp 
├─── user 
│ ├──── UserController.java 
│ ├──── UserDetailsVerifier.java 
│ └──── UserService.java 
└─── pdf 
    ├──── PdfService.java 
    ├──── PdfController.java 
    └──── PdfUtils.java 

Also entweder eg.com.myapp.util.PdfUtils.java oder eg.com.myapp.pdf.PdfUtils.java. Persönlich fand ich, dass die zweite Struktur für mich am besten funktioniert, besonders wenn man an größeren Projekten arbeitet, da die erste sehr schnell aus dem Ruder laufen kann - das Nachschlagen von Controllern und Diensten wird mühsam.

Wenn Ihre pdf utils-Klasse allgemeinere Methoden enthält, können Sie sie einfach PdfUtils.java oder nur Pdfs.java nennen. Obwohl es klarer wäre, es zum Beispiel PdfGenerator.java zu nennen und es Methoden nur für die PDF-Generierung und nichts anderes zu machen (zum Beispiel hat Frühling Base64Utils.java für das Arbeiten mit Base64 Codierung und Decodierung, hat jpa Specifications.java nur für die Spezifikation Kombination verwendet).

1

Ich würde nicht empfehlen, ein helper-Paket zu verwenden, da es wahrscheinlich zu einem Abladeplatz für nicht verwandte Hilfsfunktionen wird. Stattdessen würde ich alles, was mit PDFs zu tun hat, in ein pdf Paket packen.

Wie für die Klasse selbst, die eine PDF erzeugt, würde ich es einen beschreibenden Namen geben, der beschreibt, was es tut. So etwas wie PdfGenerator.

1

Dies ist ein sehr subjektives Thema. Persönlich bevorzuge ich Gruppenunterricht von ihrem gemeinsamen Business-Bereich, so dass sie in logische Module kombiniert:

org.app.report 
| 
+- ReportController 
+- ReportService 
+- PdfWriter 

org.app.customer 
| 
+- Customer 
+- CustomerController 
+- CustomerService 
+- CustomerRepository 

, statt Gruppierung von funktionalem Zweck einer Klasse:

org.app.controller 
| 
+- ReportController 
+- CustomerController 

org.app.service 
| 
+- etc... 

So nach meiner bevorzugten Verpackung, Sie Vielleicht möchten Sie diese Klasse direkt neben dem Rest des zugehörigen Geschäftscodes platzieren. Aber denken Sie daran, dass dies:

  • ist projektspezifische
  • ist persönliche Präferenz
  • müssen projekteigenen best practice eingestellt werden, die jedes Teammitglied

folgen müssen, wenn Sie möchten, Verwenden Sie diesen Helper an mehreren Stellen wieder, denken Sie daran, ihn in einer Art äußerem util oder helper Paket zu behalten.