Nov 222017
 

Inizio questo topic suggerendo un video tutorial trovato su YouTube con il quale è possibile realizzare in poco tempo un progetto Spring Boot + Spring Data. La playlist è composta da parti esplicative e parti dove è possibile visualizzare la scrittura del codice in tempo reale:

Questo è il primo video ma ne seguono altri fino ad arrivare a 34 video.

 

Una volta concluso il nostro sviluppo avremmo un progetto che metterà a disposizione dei servizi rest e un accesso al Data Base (che abbiamo scelto tra SQL e NoSql) attraverso Spring Data. Il passo successivo è quello di integrare Spring Security OAuth2 per avere un accesso sicuro ai servizi che abbiamo sviluppato.

Questa parte potrebbe risultare ostica ma seguendo il video tutorial di seguito è possibile integrare facilmente il modulo:

 

Vi consiglio di visualizzare anche questo link su stack overflow per evitare un problema di chiamate che potrebbe per chi è poco esperto.

 

Potrebbe capitare di riscontrare un errore nel test del refresh_token come segue:

{"error":"server_error","error_description":"UserDetailsService is required."}

 

Bene, in questo caso basterà configurare correttamente la classe di configurazione che estende AuthorizationServerConfigurerAdapter implementando come segue il metodo riportato:

@Autowired
private UserDetailsService customUserDetailsServices;
@Override
public void configure(AuthorizationServerEndpointsConfigurer configurer) throws Exception {
 
 configurer.authenticationManager(authenticationManager)
 .userDetailsService(customUserDetailsServices); //risoluzione del server_error:UserDetailsService is required
 configurer.allowedTokenEndpointRequestMethods(HttpMethod.GET, HttpMethod.POST);
 
}

 

Oct 182016
 

Nell’ingegneria del software esiste una pratica chiamata definita “Continuous Integration” (di seguito abbreviato in C.I.). Questa metodologia di sviluppo del software è definito attraverso l’utilizzo di diversi strumenti per la gestione del codice.

Prendiamo in esame lo sviluppo di un software Java, ad esempio quello reperibile a questo indirizzo. Già questo elemento fa parte del concetto di C.I., ovvero un repository GIT di riferimento del progetto da sviluppare. Nello specifico stiamo utilizzando GitHub, ma in casa o in un’azienda (piccola, media o grande che sia) è possibile installare un software dedicato al cosiddetto versioning del codice.

Il versioning del codice è alla base del C.I. ed esistono diversi strumenti. Quelli maggiormente utilizzati sono:

  1. GIT (già menzionato prima e da me preferito per il funzionamento e maggiormente utilizzato)
  2. SVN Subversion

Il versioning del codice sorgente è fondamentale soprattutto se si lavora in un Team. Più uno strumento funziona bene e meno problemi si hanno nello sviluppo. Utilizzando SVN è possibile (più frequentemente rispetto a GIT) incappare in problemi di sovrascrittura del codice perdendo le modifiche fatte fino a quel momento. GIT permette un controllo maggiore nel versioning del codice gestendo i conflitti di sovrascrittura del codice controllando, quindi, le azioni da eseguire (sovrascrittura o utilizzo di una versione del codice committato in fase di aggiornamento), almeno questo secondo la mia esperienza.

Altra peculiarità di GIT è la possibilità di “committare localmente”. Quando si sviluppa a step è possibile definire una funzionalità e committarla localmente, una volta conclusi tutti gli sviluppi si esegue il “push” del codice nel repository di riferimento (ad esempio quello linkato precedentemente.

GIT permette anche di sviluppare secondo un principio chiamato GIT Flow . Utilizzando i branch si sviluppano new feature o new release seguendo passi ben definiti in questo link

Una volta versionato il codice dobbiamo compilarlo, occorre gestire le versioni anche del compilato. Uno strumento come Jenkins è proprio quello che serve. Integrando Git con Jenkins possiamo far compilare a questo strumento una versione del codice con determinate modifiche ed escludendo un lavoro che si sta facendo su un’altra parte del codice.

Ultimo strumento è Artifactory (o JFrog) che permette la gestione dei pacchetti da utilizzare, ad esempio, attraverso maven.

 

Di seguito una figura che rappresenta quanto scritto con le comunicazioni tra i software menzionati (ed anche altri):

Buono sviluppo  Geek