Guarda, volevo rispondere nell'altra discussione ma non ne ho avuto tempo ... questi sono giorni un po' concitati per me perché sto cambiando azienda ...
Comunque dato che hai posto qui un po' di questioni, vediamo di chiarirle bene.
iBaffiPro ha scritto:
Come da titolo vorrei realizzare un progetto pilota, una sorta di script base, chiamatelo come volete, che sia riutilizzabile per tutti i miei progetti futuri.
Allora: il fatto del "riutilizzo" è un altro discorso/livello. E questo riguarda
anche il sistema di build che si utilizza (Maven o Gradle, tipicamente). Poter riutilizzare "facilmente" significherebbe poter poi avere un singolo artifact da poter tirare dentro in un qualunque altro progetto. E questo lo si fa solo conoscendo bene lo strumento di build in uso (Maven o Gradle, appunto).
E nell'ottica di Spring Boot è anche possibile creare uno "starter" custom che fornisca le dovute autoconfigurazioni, default, ecc...
Ma come ho appena detto, tutto questo è un altro discorso. Dovresti prima cercare di arrivare ad una applicazione perlomeno che funziona .... POI a quel punto, avendo fatto un po' di esperienza, provi a ragionare su come rendere "riutilizzabili" certe parti di quella applicazione a favore di
n altri possibili progetti. Ripeto, è un lavoro fattibile ma non facile, specialmente se hai poca/nessuna esperienza su Spring/Spring Boot/Maven/Gradle.
iBaffiPro ha scritto:
Su Google ho trovato script che sembra alla mia portata. Non ho ancora provato a caricare su di un IDE lo script e non so neppure se riuscirò a comprenderlo nel dettaglio ne tantomeno se sarò in grado di implementare la fase di registrazione automatica del nuovo utente, la convalida dell'utente, l'invio di email all'utente registrato e molte altre cose che ho in mente ma desidero ugualmente fare un tentativo.
Tutto quello che hai trovato può essere sicuramente uno "spunto" valido e utile. Ma non ti devi "fissare" troppo su
quei progetti. Perché possono essere fatti con certi obiettivi particolari e potrebbero trascurarne altri che magari invece a te interessano. Oltre al fatto che potrebbero anche non essere scritti benissimo o contenere "forzature" varie poco eleganti.
Quando si fanno applicazioni di questo tipo ci sono molte cose da studiare, valutare. E dovresti essere TU a fare queste valutazioni. Tanto per dirne una. Se la tua è una web app classica con pagine web, ci sono almeno due modi per gestire la interfaccia utente:
- creando la interfaccia utente lato server. E' il classico caso in cui a fronte di una request si rimanda alla fine ad una "vista" interna alla webapp che poi diventa una pagina HTML inviata al client (browser). Spring Boot tra l'altro consente di usare almeno 4 sistemi di templating differenti: Thymeleaf, FreeMarker, Mustache e Groovy.
- creando (anche proprio separatamente dalla webapp) la parte web usando framework "moderni" (Angular / React / Vue ecc...) che poi fa chiamate AJAX alla parte server per ottenere i dati. Questo è un altro livello e richiede anche ben altre competenze.
iBaffiPro ha scritto:
Vi vorrei chiedere, prima di iniziare, se ritenete lo script moderno, attuale, scritto bene, robusto e valido al 100% per realizzare altre applicazioni ben più complesse di cui mi occuperò in futuro come la realizzazione di un blog, di un ecommerce o qualcosa di ancora più complesso ed articolato.
Ti stai aspettando requisiti molto "elevati" da script che si trovano qua e la su internet, che tipicamente sono solo esempi (anche validi, non metto in dubbio) ma che restano proprio solo esempi da cui prendere spunto.
iBaffiPro ha scritto:
in cui un utente possa registrarsi ma debba attendere la convalida dall'amministratore del sito prima di poter utilizzare un'applicazione
Questa logica inevitabilmente complica le cose. Per quanto ne so, Spring Security non applica di serie una logica di questo tipo. Si può sicuramente fare ma bisogna "entrare" davvero molto di più dentro Spring Security. Significa che dovrai documentarti molto bene, leggendo la reference di Spring Security e possibilmente/preferibilmente prendendo anche un buon libro su questo argomento (ne è uscito uno della Manning appena ad Ottobre dello scorso anno)
iBaffiPro ha scritto:
Volevo anche un consiglio sul tipo di database più appropriato da usare. Sono molto indeciso tra MySQL e PostgreSQL. Nel caso riteniate lo script all'altezza e non superato da altri strumenti di java più potenti di cui ne ignoro l'esistenza, vorrei sapere quali sono i pro ed i contro di un database e l'altro. Personalmente sono indeciso perché tutti i principali CMS usano MySQL ma PostgreSQL è stato creato da Oracle che ha nel suo portfolio un DB ad oggetti forse potente quanto i DB venduti da Microsoft. Al momento sono più propenso verso Postgresql ma attendo un vostro suggerimento in merito.
Allora: finché puoi far girare tutto su un tuo pc, puoi scegliere quello che vuoi. Il discorso cambierebbe se intendessi poi mettere la webapp su un hosting "reale". Qui potresti avere poca/nessuna scelta. In generale sulla maggior parte degli hosting più basilari è più facile trovare MySQL piuttosto che PostgreSQL. Anzi, per questioni di costi/licenze è ancora più facile che su un hosting ci trovi il MariaDB che è sostanzialmente un
fork del MySQL che è stato mantenuto gratuito e open-source.
iBaffiPro ha scritto:
Ho abbandonato l'idea di usare JPA perché mi sembra più complesso rispetto alle classiche query.
JPA/Spring Data JPA ovviamente non sono obbligatori. Ci sono comunque altre alternative, anche e soprattutto nel contesto di Spring Boot: usare MyBatis (è un framework per la persistenza ma NON è un ORM), oppure usare i template JDBC di Spring o anche altro.
La questione quindi è: cosa hai provato a fare finora? Hai già provato a scrivere una banalissima webapp con Spring Boot ?da zero? che mostra una paginetta di "hello world" usando magari un template engine (tipo Thymeleaf)?
Se non riesci nemmeno ancora su queste cose, tutto il resto che hai indicato è ovviamente poco raggiungibile ....
E quindi potremmo stare a discutere fino alla fine del prossimo mese ....