2017-02-03 4 views
1

Also habe ich die verschiedenen Schichten einer Federanwendung untersucht und bis jetzt für meine erste Federanwendung denke ich, dass ich einen ziemlich guten Job gemacht habe. Ich bin nicht sicher, wo ich eine FileController-Klasse platzieren soll. Es ist vielleicht gar kein Controller, aber mehr ein Service, da bin ich mir nicht sicher. Vielleicht ist das nur eine schlechte Idee und ich sollte einfach etwas wie Spring Batch verwenden. Ich glaube einfach nicht, dass ich diese Art von Skalierbarkeit brauche. Ich denke, das Komplizierteste, was ich tun könnte, ist das Lesen und Schreiben einer Excel-Datei von maximal 5000 Zeilen. Der Datei-Controller unten würde ich erweitern, um sowohl Text- als auch .xls-Dateien zu lesen und zu schreiben. Sollte dies ein Controller sein und im Controller-Verzeichnis einer Spring-MVC-Web-Anwendung bleiben oder sollte dies ein Service sein und innerhalb des Service-Verzeichnisses oder sollte dies ein Bean und ein anderes Verzeichnis sein? Auf den Dateicontroller wird immer nur von einem Dienstobjekt zugegriffen, das von einem Spring MVC-Controller über eine Post- oder Get-Anforderung aufgerufen wird. Ich denke meine Unerfahrenheit scheint wirklich hier.Wo finde ich einen Filecontroller innerhalb einer Federanwendung?

Grundsätzlich welche Annotation sollte ich verwenden: @Controller, @Bean, @Service?

Ich habe gelesen, dass die @Controller Annotation in erster Linie nur für Anforderungszuordnungen verwendet wird. Aber es wäre sinnvoll, Controller zu haben, die nicht webbasiert sind.

Soll ich nur Spring Batch verwenden?

Klasse Beispiel

public class FileController { 

    List<String> readFile(String filename) { //some impl } 
    String readFile(String filename) { //some impl }  

    void writeFile(List<String> content) { //some impl } 
    void writeFile(String content) { //some impl } 

    void close() { //some imple } 

} 

Ich dachte auch über nur das Lese Hinzufügen und innerhalb der Methode in eine Datei zu schreiben, die es verwendet wird, aber ich dachte, das ist ein schlechter Ansatz war, da ich die Möglichkeit, das gleiches benötigt habe Logik in der Zukunft, DRY.

+0

Warum nicht @Component verwenden? – VPK

Antwort

3

@Controller Annotation wird für Beans verwendet, die Methoden auf URI und HTTP-Mehtod abbilden. Solche Bohnen sitzen typischerweise oben auf der Bahnschicht.

Da Ihre Bean nicht aus dem Internet zugegriffen wird, kann nicht @Controller sein. Meiner Meinung nach ist es ein Service. Benennen Sie es einfach in FileService um und notieren Sie es mit @Service.