Wpis z mikrobloga

#programowanie #java #spring

Jakiego typu powinno być pole z plikiem w klasie modelu?
- Raz będzie tam plik z dysku (np. File z java.io)
- Raz będzie tam plik przesłany requestem HTTP (MultipartFile z org.springframework.web.multipart)
Jest coś nadrzędnego?

O ile ma to znaczenie, to w serwisie pobieram z nich InputStreama, a potem do bazy zapisuje byte[]. Ale na wejściu mam dwa różne typy. Gdyby to był sam plik to zrobiłbym dwie metody z różnymi typami, ale przekazuję obiekt z wieloma polami - w tym jedno z plikiem. Chyba nie powinienem robić pola typu InputStream, bo tracę informację np. o nazwie pliku (musiałbym robić kolejne pole) i musiałbym na zewnątrz obsługiwać błędy ze strumieniem (dwukrotnie zamiast raz w serwisie).
  • 4
via Wykop Mobilny (Android)
  • 0
@mk321: Może zrobić własną klasę która posiada pola filename i bytes jako tablice bajtów? To jak jest serwowany plik nie powinno mieć znaczenia dla serwisów przetwarzających dane pliku i w taki sposób ładnie sobie odseparujesz warstwę pobierająca plik od warstwy logiki. Wystarczy zrobić odpowiednie strategie tworzące tę klasę z różnych danych wejściowych.
via Wykop Mobilny (Android)
  • 0
@tempname0626: dobry pomysł z owrapowaniem tych obiektów. Muszę sobie przećwiczyć wzorzec strategia.

Gorzej, że jak w zespole jest dużo juniorów, a takie rozwiązanie komplikuje prostą rzecz.

Dziwi mnie, że nie ma na to jakiegoś gotowca. Przecież prawie każdy projekt musi operować na plikach.

@Keczupp: wydaje się dobrym pomysłem, ale jest słabe. Nie powinno odpakowywać się InputStreama na początku i potem przekazywać byte[], bo wtedy trzymasz cały plik w pamięci. Pomysł,