Score %0 (0 correct0 incorrect60 unanswered)

Q1. Come vengono utilizzati i filtri in Spring Web?

  • I filtri vengono chiamati prima che una richiesta arrivi al DispatcherServlet. Consentono un'elaborazione a catena di stile di intercettazione delle richieste web per scopi di sicurezza, timeout e altri scopi.
  • I filtri vengono utilizzati con un algoritmo di checksum che filtra i byte non validi da un corpo della richiesta in flusso di byte e consente l'elaborazione delle richieste HTTP dal DispatcherRequestServlet.
  • I filtri vengono utilizzati con un algoritmo di checksum che filtra i byte non validi da un flusso di ottetti di un upload multipart e consente l'elaborazione a catena delle richieste WebDispatcherServlet.
  • I filtri vengono utilizzati per convalidare i parametri della richiesta dal corpo della richiesta in flusso di byte e consentire l'elaborazione delle richieste dal DispatcherRequestServlet.

HandlerInterceptors vs. Filters in Spring MVC. Inoltre, non esiste nulla chiamato DispatcherRequestServlet in Spring.

Q2. Come viene definita una risorsa nel contesto di un servizio REST?

  • Una risorsa è la stringa letterale effettiva che compone un URI a cui si accede su un servizio web RESTful.
  • È un concetto astratto che rappresenta un oggetto tipizzato, dati, relazioni e un insieme di metodi che operano su di esso e a cui si accede tramite un URI.
  • Un servizio REST ha un pool di risorse composte da allocazioni di memoria che consentono l'elaborazione di una richiesta.
  • Una risorsa per un servizio REST è un'allocazione esplicita di un thread o cicli CPU per consentire l'elaborazione di una richiesta.

Rest Service in Spring

Q3. Quale di queste è una annotazione Advice valida?

  • @AfterError
  • @AfterReturning
  • @AfterException
  • @AfterExecution

Spring Advice Type Annotation

Q4. Cosa fa un ViewResolver?

  • Supporta l'internazionalizzazione delle applicazioni web rilevando la località dell'utente.
  • Genera una vista mappando un nome vista logico restituito da un metodo del controller a una tecnologia di visualizzazione.
  • Crea una vista univoca determinata dal tipo di browser dell'utente, supportando la compatibilità cross-browser.
  • Mappa i parametri personalizzati alle viste SQL nel database, consentendo la creazione di contenuti dinamici nella risposta.

Risoluzione delle viste in Spring MVC

Q5. Come vengono implementati i repository di Spring Data da Spring in fase di esecuzione?

  • Spring genera automaticamente il codice per te in base alla tua configurazione YAML che definisce una catena di MethodInterceptor che intercetta le chiamate all'istanza e calcola SQL al volo.
  • Viene creato un'istanza proxy JDK, che supporta l'interfaccia del repository, e un MethodInterceptor intercetta le chiamate all'istanza e le instrada come richiesto.
  • Il proxy JDK di Spring crea un processo di runtime separato che funge da intermediario tra il database e il server Web e intercetta le chiamate all'istanza e gestisce le richieste.
  • Spring genera automaticamente il codice per te in base ai file di configurazione XML che definiscono una fabbrica SpringMethodAutoGeneration che intercetta le chiamate all'istanza e crea un metodo dinamico che calcola SQL al volo.

Spiegazione QnA

Q6. Cos'è SpEL e come viene utilizzato in Spring?

  • SpEL (Spring Expression Language) viene eseguito nella JVM e può fungere da sostituto plug-and-play per Groovy o altri linguaggi.
  • SpEL (Spring Expression Language) supporta operatori booleani e relazionali e espressioni regolari, ed è utilizzato per interrogare un grafo di oggetti a tempo di esecuzione.
  • SpEL (Spring Expression Language) ti consente di creare, configurare ed eseguire attività come la creazione di artefatti e il download di dipendenze di oggetti.
  • SpEL (Spring Expression Language) traspile nativamente un linguaggio JVM in un altro, consentendo una maggiore flessibilità.

Documentazione sulle espressioni Spring

Q7. Il processo di collegamento degli aspetti con altri oggetti per creare un oggetto consigliato viene chiamato

  • concatenazione dinamica
  • legatura
  • tessitura
  • intercalazione

Q8. Come vengono utilizzati i proxy dinamici JDK e i proxy CGLIB in Spring?

  • Il proxy dinamico JDK può fare il proxy solo di un'interfaccia, quindi viene utilizzato se il target implementa almeno un'interfaccia. Un proxy CGLIB può creare un proxy mediante subclassing e viene utilizzato se il target non implementa un'interfaccia.
  • Solo i proxy dinamici JDK vengono utilizzati nel ciclo di vita del bean di Spring. I proxy CGLIB vengono utilizzati solo per l'integrazione con altri framework.
  • Solo i proxy CGLIB vengono utilizzati nel ciclo di vita del bean di Spring. I proxy dinamici JDK vengono utilizzati solo per l'integrazione con altri framework.
  • Il proxy dinamico JDK può essere utilizzato solo da una classe astratta estesa da un target. Un proxy CGLIB può creare un proxy tramite intrecciamento dei bytecode ed è utilizzato se il target non estende una classe astratta.

Q9. Quale di queste non è un metodo valido sull'interfaccia JoinPoint?

  • getArgs()
  • getExceptions()
  • [

] getSignature()

  • getTarget()

Q10. In quale ordine vengono eseguiti il metodo annotato con @PostConstruct, il metodo del parametro init-method sui bean e il metodo afterPropertiesSet()?

  • 1. afterPropertiesSet() 2. init-method 3. @PostConstruct
  • 1. @PostConstruct 2. afterPropertiesSet() 3. init-method
  • 1. init-method 2. afterPropertiesSet() 3. @PostConstruct
  • Non è possibile utilizzare questi metodi insieme: è necessario sceglierne solo uno.

Q11. Qual è la funzione dell'annotazione @Transactional a livello di classe?

  • È un attributo di transazione configurato dal file di configurazione spring.security.transactions.xml che utilizza l'implementazione e il codice di convalida delle transazioni di Spring.
  • È una transazione che deve essere convalidata attivamente dal bytecode di una transazione utilizzando la classe TransactionBytecodeValidator di Spring. Il comportamento predefinito della transazione esegue il rollback sull'eccezione di convalida ma esegue il commit su una convalida corretta.
  • Crea un proxy che implementa le stesse interfacce della classe annotata, consentendo a Spring di iniettare comportamenti prima, dopo o intorno alle chiamate dei metodi nell'oggetto in cui viene eseguito il proxy.
  • È una transazione che deve essere convalidata attivamente dalla classe TransactionValidator di Spring utilizzando il codice di convalida delle transazioni di Spring. Il comportamento predefinito della transazione esegue il rollback sull'eccezione di convalida.

Q12. Qual è un esempio valido dell'output di questo codice (ignorando le istruzioni di logging)?

@SpringBootApplication
public class App {
     public static void main(String args[]) {
          SpringApplication.run(App.class, args);
          System.out.println("startup");
     }
}

public class Print implements InitializingBean {
     @Override
     public void afterPropertiesSet() throws Exception {
          System.out.println("init");
     }
}
  • Non verrà stampato nulla
  • startup init
  • init
  • startup

Spiegazione: il metodo SpringApplication.run restituisce il contesto creato, quindi il metodo main continuerà a eseguire e stamperà "startup". La classe Print non è un bean di Spring, perché non è annotata con @Component, quindi non verrà inizializzata.

Q13. Quale istruzione println rimuoveresti per evitare che questo codice generi un'eccezione di null pointer?

@Component
public class Test implements InitializingBean {
     @Autowired
     ApplicationContext context;
     @Autowired
     static SimpleDateFormat formatter;

     @Override
     public void afterPropertiesSet() throws Exception {
          System.out.println(context.containsBean("formatter") + " ");
          System.out.println(context.getBean("formatter").getClass());
          System.out.println(formatter.getClass());
          System.out.println(context.getClass());
     }
}

@Configuration
class TestConfig {
     @Bean
     public SimpleDateFormat formatter() {
          return new SimpleDateFormat();
     }
}
  • formatter.getClass()
  • context.getClass()
  • context.getBean("formatter").getClass()
  • context.containsBean("formatter")

Q14. Qual è l'interfaccia principale per accedere a un contenitore di bean Spring?

  • SpringInitContainer
  • ResourceLoader
  • ApplicationEventPublisher
  • BeanFactory

Q15. Quale annotazione può essere utilizzata all'interno di Spring Security per applicare la sicurezza a livello di metodo?

  • @Secured
  • @RequiresRole
  • @RestrictedTo
  • @SecurePath

Q16. Qual è il risultato della chiamata del metodo del controller map utilizzando la richiesta HTTP GET localhost:8080/map?foo=foo&bar=bar ?

@RestController
public class SampleController {

     @RequestMapping("/map")
     public String map(@RequestParam("bar") String foo, @RequestParam("foo") String bar) {
          return bar + foo;
     }
}
  • Viene generata un'eccezione InvalidParameterNameMappingException durante l'esecuzione.
  • barfoo
  • foobar
  • Viene restituito un codice di stato 400 Bad Request.

Q17. Qual è lo scopo dell'annotazione @Lazy e quando la si utilizzerebbe?

  • Impedisce la creazione e l'iniezione di un bean fino a quando non si esegue un comando CLI specifico. Riduce la complessità nell'applicazione.
  • Può essere applicata a un bean in modo che il bean non venga memorizzato nel database. Riduce il numero di operazioni sul database.
  • Può essere applicata a un bean in modo che il bean non venga creato e iniettato fino a quando non è necessario. Può contribuire ad accelerare il tempo di avvio dell'applicazione.
  • Impedisce la creazione e l'iniezione di un bean fino a quando non si riceve una richiesta HTTP a un hook di callback. Riduce la dimensione del disco.

Q18. Cos'è l'iniezione delle dipendenze?

  • un metodo mediante il quale gli oggetti definiscono le dipendenze di cui hanno bisogno come astrazioni che consentono al framework di istanziarli e configurarli in un'unica posizione centrale a tempo di esecuzione.
  • un paradigma in cui il codice dipendente viene iniettato nel bytecode di un'applicazione Java su un server remoto.
  • un modo per iniettare dipendenze remote in un file JAR preconfezionato dal file system.
  • un modo per iniettare dipendenze remote in un file WAR preconfezionato dal file system.

Q19. Cos'è un servizio web RESTful?

  • Reactive Enterprise Status Transfer è un servizio web che comprende un insieme di linee guida e vincoli tecnici per i servizi web che monitorano e segnalano un insieme di risorse fondamentali.
  • Representational State Transfer è uno stile architetturale per la creazione di servizi web che include architettura client-server, statelessness, cacheability, un sistema a strati e un'interfaccia uniforme.
  • Redundant Enumerated State Transfer è un servizio web che fornisce ridondanza in caso di guasto e

specifica vincoli tecnici per i servizi web che hanno accesso alle risorse.

  • Reactive Enterprise State Transfer è un servizio web che comprende un insieme di linee guida e vincoli tecnici per i servizi web che hanno accesso alle risorse e sono asincroni per natura.

Q20. Cosa succede quando una classe è annotata con l'annotazione @Controller?

  • Viene definita una definizione di bean del controller nel WebApplicationContext del servlet. La classe è contrassegnata come un componente web e è possibile mappare le richieste ai metodi del controller.
  • Viene definita una definizione di bean del controller nel contesto Web e il Web Servlet viene contrassegnato come un componente che legge le richieste del controller mappate da un file di configurazione XML.
  • Viene definita una definizione di bean del controller nel contesto di Tomcat e il Servlet del controller viene contrassegnato come un componente che legge le richieste del controller mappate da un file di configurazione YAML.
  • Viene definita una definizione di bean del controller nel contesto del servlet e il Servlet del controller viene contrassegnato come un componente che legge le richieste del controller mappate da un file di configurazione XML.

Q21. Quale proprietà può essere utilizzata per cambiare la porta di un'applicazione Spring?

  • Port
  • spring.port
  • spring.settings.port
  • server.port

Q22. Qual è lo scopo dell'annotazione @ResponseBody?

  • per convalidare l'array di caratteri contenuto in una risposta per garantire che sia una codifica di caratteri valida
  • per generare un flusso di byte locale dal corpo di una risposta che consente di scansionare una richiesta per rischi di sicurezza
  • per indicare se il valore restituito di un metodo del gestore deve essere vincolato al corpo della risposta web negli ambienti servlet
  • per garantire un flusso di byte ThreadLocal che consente di codificare una risposta per la lettura diretta in un flusso di socket

Q23. Come vengono utilizzati i framework di mock come Mockito con Spring?

  • Mockito avvierà un mock web service ospitato in un contenitore Docker che può rispondere alle richieste HTTP per simulare le API di terze parti.
  • Mockito può utilizzare annotazioni o metodi factory per creare oggetti mock che possono essere iniettati nei test al posto delle dipendenze. Il comportamento dei mock può essere configurato esplicitamente.
  • Mockito creerà utenti mock per eseguire ripetutamente richieste contro la tua applicazione Spring per testare la capacità dell'applicazione di sostenere il carico.
  • Mockito avvierà un mock web service ospitato in un contenitore Docker che può rispondere alle chiamate RPC per simulare risorse remote.

Q24. Qual è il nome del servlet centrale che dispaccia le richieste ai controller?

  • DispatchingDelegatorServlet
  • DispatcherServlet
  • Router
  • FrontControllerServlet

Q25. Qual è lo scopo del contenitore IoC (Inversion of Control) di Spring?

  • Istanzia e configura gli oggetti, forniti a tempo di esecuzione, alle classi che li definiscono come dipendenza.
  • Consente al codice front-end di gestire gli oggetti ResponseBody forniti da un'API REST back-end.
  • Consente a un database di definire gli oggetti aziendali tramite uno schema condiviso a tempo di compilazione.
  • Agevola un server remoto nella configurazione di un'applicazione locale.

Q26. Cosa è la scansione dei componenti?

  • funzionalità che scansiona i pacchetti per le classi con annotazioni specifiche e, quando trovate, crea le loro definizioni di bean all'interno del contenitore IoC
  • paradigma in cui il bytecode viene attivamente esaminato per identificare ottimizzazioni aggiuntive da iniettare nei componenti nel contesto dell'applicazione
  • un metodo mediante il quale i repository cloud vengono esaminati per identificare componenti da iniettare in un contenitore IoC
  • un metodo mediante il quale i dati binari in un database vengono cercati per identificare componenti da iniettare nel contenitore IoC

Q27. Cosa fa @SpringBootApplication?

  • Questa annotazione prende il letterale di stringa passato come parametro nell'annotazione e genera automaticamente tutto il codice per la tua applicazione come definito nel parametro del modello passato.
  • Questa annotazione composita applica le annotazioni @Bootable, @Springify e @StandardConfig che lanciano uno strumento CLI dopo aver lanciato il file WAR di Spring Boot che ti guiderà attraverso una serie di prompt per configurare la tua app.
  • Questa annotazione esamina il file di configurazione spring-boot-config-construction.yaml fornito nella tua directory radice e genera automaticamente tutto il codice per la tua applicazione come definito nel file YAML.

Q28. Come Spring Data facilita le query contro un datastore?

  • Le query sono esplicitamente codificate nelle implementazioni del repository utilizzando Spring Data CriteriaBuilder.
  • I metadati della query vengono memorizzati nel datastore sottostante e recuperati a tempo di esecuzione per repository.
  • Le query sono derivate dalle firme dei metodi su un repository di Spring Data che contengono parole chiave nel loro nome per la costruzione della logica della query.
  • Un file spring-data-queries.xml contiene query all'interno di tag di entità che specificano la logica della query per ogni repository.

Q29. Come Spring genera i nomi dei bean per le classi annotate con @Component che non specificano un nome?

  • Utilizza il nome breve della classe con la prima lettera in minuscolo.
  • Utilizza il nome breve della classe.
  • Utilizza il nome breve della classe in maiuscolo.
  • Utilizza il nome canonico della classe in minuscolo.

Q30. Cos'è il delegating filter proxy?

  • È il proxy catena di filtri servlet che gestisce tutte le richieste al percorso definito in spring.security.xml. Tutte le chiamate al proxy del filtro vengono inoltr

ate al filtro sottostante, che esegue quindi la sua logica personalizzata.

  • Un filtro che delega la chiamata al delegato reale filtrando l'interfaccia filterChain. Il delegato è definito come un bean all'interno del contesto dell'applicazione di Spring.
  • Un proxy che delega la richiesta alla logica del bean tramite una chiamata al delegato per ogni richiesta. Il delegato viene specificato come attributo della definizione del bean.
  • Una configurazione di sicurezza che configura un proxy delegato all'interno del contesto di sicurezza dell'applicazione per gestire l'autenticazione e l'autorizzazione.

Q31. Qual è il valore fornito da Spring Boot Actuator?

  • Aiuta a monitorare e gestire un'applicazione Spring Boot fornendo endpoint come controlli di salute, audit, raccolta di metriche e tracciatura HTTP.
  • Fornisce funzionalità out-of-the-box che si integra con piattaforme di metriche di terze parti per scalare automaticamente il numero di thread nei threadpool.
  • È una CLI che consente di modificare la configurazione di un'applicazione Spring Boot in esecuzione senza la necessità di riavviare o tempi di inattività.
  • Fornisce funzionalità out-of-the-box che si integra con piattaforme di metriche di terze parti per scalare automaticamente il numero di istanze dell'applicazione Spring Boot.

Spring Boot Actuator

Q32. Qual è lo scopo dell'annotazione @ContextConfiguration in un test JUnit?

  • Introspeziona il computer locale e fornisce automaticamente risorse in base a determinati file di configurazione contestuali.
  • Genera automaticamente commenti per le classi annotate sulle dipendenze autowired per fornire contesti aggiuntivi sulle dipendenze.
  • Definisce metadati a livello di classe per determinare come caricare o configurare un ApplicationContext nei test di integrazione di Spring.
  • Genera automaticamente JavaDocs per le classi annotate per fornire contesti aggiuntivi sullo scopo della classe.

@ContextConfiguration Example in Spring Test

Q33. In cosa differiscono autenticazione e autorizzazione?

  • L'autenticazione è l'atto di concedere accesso a risorse specifiche e funzioni basate su impostazioni di configurazione. L'autorizzazione è l'atto di ispezionare le credenziali di un utente per garantire che non stiano impersonando un altro utente.
  • L'autenticazione è l'atto di verificare che risorse specifiche e funzioni siano effettivamente valide. L'autorizzazione è l'atto di verificare che le credenziali di un utente non siano scadute.
  • L'autenticazione è l'atto di verificare che risorse specifiche e funzioni esistano effettivamente nel database. L'autorizzazione è l'atto di verificare che le credenziali di un utente siano valide.
  • L'autenticazione convalida che gli utenti siano chi sostengono di essere. L'autorizzazione concede l'accesso a risorse specifiche e funzioni.

Q34. Qual è lo scopo dell'annotazione @RequestBody?

  • Creare uno stream di byte ThreadLocal che consente di codificare una richiesta per la lettura direttamente in un database.
  • Generare automaticamente uno stream di byte ThreadLocal dal corpo di una richiesta che consente di eseguire la scansione di una richiesta per rischi di sicurezza.
  • Indicare se un parametro del metodo del gestore annotato dovrebbe essere associato al corpo della richiesta web, che viene convertito da un HttpMessageConverter.
  • Convalidare automaticamente i caratteri contenuti in una richiesta per garantire che siano una codifica di caratteri valida.

Q35. Cos'è il DispatcherServlet e quale è la sua funzione?

  • Il processo demon del DispatcherServlet assegna un processo Web Servlet Container separato a ciascuna richiesta HTTP che arriva al server web.
  • È un servlet che instrada le richieste HTTP ai gestori/controller registrati per l'elaborazione.
  • L'API del DispatcherServlet assegna un processo Web Servlet Node separato a ogni ulteriore richiesta HTTP che arriva al server web.
  • È un servlet che instrada un array di processi demon di background che allocano memoria e cicli CPU per ogni richiesta.

Q36. Cos'è l'autoconfigurazione di Spring Boot?

  • Attiva una revisione automatizzata locale dei file di configurazione come web.xml e rileva possibili problemi di sicurezza o risolve automaticamente le dipendenze circolari.
  • Avvia una revisione automatica della configurazione da parte di un agente basato su web che esamina il file web.xml esistente e rileva possibili problemi di sicurezza.
  • È un metodo intelligente ed opinabile di introspezione di un'app per configurare i bean che sono probabilmente necessari. Questa configurazione può essere sovrascritta nel tempo con una configurazione manuale.
  • Fornisce funzionalità di plug-in durante la modifica dei file web.xml e di altre configurazioni che completeranno automaticamente le dipendenze comuni durante la digitazione.

Q37. Quali sono i passaggi validi da compiere per abilitare JPA in Spring Boot?

  • Aggiungi un'annotazione @EnableJpaRepositories alla tua classe di configurazione e crea un repository Spring Data.
  • Aggiungi un'annotazione @EnableJpaEntities alla tua classe di configurazione, crea un file di configurazione YAML di Spring Data e aggiorna manualmente i file di configurazione XML di Spring per definire le posizioni dei tuoi repository.
  • Aggiungi un'annotazione @EnableDbFunctionality alla tua classe di configurazione, crea un file di configurazione XML di Spring Data e aggiorna manualmente il file delle fabbriche di Spring per definire i tuoi repository.
  • Aggiungi un'annotazione @InitJpaEntities alla tua classe di configurazione, crea un file di configurazione delle proprietà di Spring Data e aggiorna manualmente i parametri di avvio di Spring per definire le posizioni dei tuoi repository.

Q38. Cos'è una transazione nel contesto di Spring Data?

  • Una modifica dello schema controllata dalla versione che viene applicata a un database.
  • Una sequenza di azioni che rappresenta un'unità di lavoro gestita come un'operazione singola che può essere confermata o annullata.
  • Un messaggio codificato e una risposta tra varie partizioni di un database.
  • Uno scambio o interazione tra vari nodi lavoratori in un ambiente multithread.

Q39. La modularizzazione di una preoccupazione che attraversa più classi è nota come ____.

  • multiclass
  • aspect
  • crosscut
  • sidecut

Q40. Come si

inietta una dipendenza in un bean Spring?

  • Utilizzare l'iniezione di campo.
  • Annotare un metodo Setter con l'annotazione @Autowired.
  • Specificare i parametri nel costruttore con un'annotazione @Autowired opzionale.
  • Qualsiasi delle opzioni sopra.

Q41. Considera il file di proprietà application.properties. Come caricheresti la proprietà my.property?

my.property=Test
  • A
@Prop("${my.property}")
private String val;
  • B
@GetVal("my.property")
private String val;
  • C
@GetProperty("${my.property}")
private String val;
  • D
@Value("${my.property}")
private String val;

Q42. Cos'è un bean nel contesto di Spring?

  • Una dipendenza gestita definita da metadati di configurazione che può essere iniettata in classi downstream.
  • Un'entità denominata, binaria, agnostica che può essere tradotta tra diversi formati di dati.
  • Un payload trasferibile tra diversi servizi in un'architettura orientata ai servizi (SOA).
  • Un pezzo discreto di dati codificato in un formato binario per la persistenza su un filesystem.

Q43. Quale proprietà viene considerata con priorità da Spring?

  • le proprietà dell'applicazione situate in un file application.properties al di fuori del file application.jar
  • le annotazioni @PropertySource sulle classi di configurazione
  • i file application-{profile}.properties specifici del profilo
  • le proprietà dell'applicazione situate in un file application.properties all'interno del file application.jar

Q44. Nella vita di un bean Spring illustrata nella figura, qual è la terza fase del processo?

diagram

  • Persisti le definizioni dei bean in un database
  • Istanzia gli oggetti bean
  • Denormalizza la definizione dei bean
  • Usa la riflessione per iniettare gli oggetti bean nel contenitore servlet

Q45. Qual è la proprietà di Spring Boot utilizzata per impostare il livello di registrazione per l'intera applicazione nel file application.properties?

  • logging.settings
  • log.level
  • root.logger.level
  • logging.level.root

Logging in Spring Boot

Q46. Come è identificato un bean Spring in modo univoco?

  • un UUID generato automaticamente
  • un nome String univoco
  • un ID Integer auto-incrementato
  • un ID derivato dalla sua posizione in memoria

Q47. Qual è la differenza tra una distribuzione JAR e una distribuzione WAR in Spring Boot?

  • Spring Boot può creare un file WAR autoeseguibile che viene eseguito senza necessità di un contenitore servlet. Un file JAR deve essere distribuito su un contenitore web esistente come Tomcat con file separati per le dipendenze.
  • Spring Boot può creare un file JAR che contiene bytecode che interagisce direttamente con il sistema operativo senza necessità di un contenitore servlet. Un file WAR deve essere distribuito su un contenitore web esistente come Tomcat con file separati per le dipendenze.
  • Il file JAR di Spring Boot verrà distribuito su un contenitore Servlet come Tomcat su un server web in esecuzione locale. Il file WAR verrà distribuito su un contenitore servlet basato su cloud.
  • Spring Boot può creare un file JAR autoeseguibile che contiene tutte le dipendenze e un contenitore Servlet integrato. Un file WAR deve essere distribuito su un contenitore web esistente come Tomcat.

Q48. In che modo l'impostazione di propagazione della transazione influisce sul comportamento delle transazioni?

  • Garantisce che le transazioni che vengono confermate nel database vengano propagate a tutti i nodi di un sistema di database clusterizzato.
  • Impone che venga creato un ambito di transazione logico per ogni metodo che determina lo stato di sola annullabilità, con un ambito di transazione esterno logicamente indipendente dall'ambito di transazione interno.
  • Garantisce che le transazioni inviate al cluster di database vengano propagate a tutti i nodi di un cloud di database clusterizzato.
  • Nessuna delle opzioni sopra

Q49. Cosa viene stampato quando questo codice viene eseguito come @SpringBootApplication?

@Component
public class Test implements InitializingBean {
     @Autowired
     ApplicationContext context;

     private TestService service;
     public void setService(TestService service) {
          this.service = service;
     }

     @Override
     public void afterPropertiesSet() throws Exception {
          System.out.print(context.containsBean("testService") + " ");
          System.out.println(service.getClass());
     }
}
@Service
class TestService {}
  • uno stacktrace di NullPointerException
  • vero nullo
  • vero package.TestService
  • falso package.TestService

Spiegazione: manca @Autowired su private TestService service o sul setter.

Q50. Per registrare un filtro personalizzato che si applica solo a determinati modelli di URL, è necessario rimuovere l'annotazione _ dalla classe del filtro e registrare un @Bean di tipo _ in @Configuration di Spring.

  • @RequestMapping; WebRequest
  • @Controller; URLFilter
  • @WebFilter; ServletContextInitializer
  • @Component; FilterRegistrationBean

Q51. Qual è il termine corretto per ciascuna delle definizioni seguenti?

  1. Un predicato che corrisponde ai join point.
  2. Un punto durante l'esecuzione di un programma, come l'esecuzione di un metodo o la gestione di un'eccezione.
  3. Un'azione intrapresa da un aspetto in un particolare join point.
  • ­
    1. Pointcut
    2. Join point
    3. Advice
    

Q52. Come dovrebbero essere memorizzate le password?

  • Le password dovrebbero essere crittografate utilizzando una funzione one-way adattativa come bcrypt.
  • Le password possono essere memorizzate in formato codificato in BASE64 se vengono memorizzate in un database

privato.

  • Le password dovrebbero essere salate e crittografate utilizzando l'algoritmo MD5.
  • Le password dovrebbero essere crittografate utilizzando l'algoritmo SHA-1, quindi salate per fornire una difesa contro gli attacchi di tabelle arcobaleno.

Spiegazione: sha-1 non è considerato più sicuro: https://en.wikipedia.org/wiki/SHA-1#Attacks . Con bcrypt è possibile selezionare hash più complessi https://en.wikipedia.org/wiki/Bcrypt

Q53. A quali metodi fa riferimento questa espressione Pointcut?

@target(com.linkedin.annotation.Loggable)

  • qualsiasi join point in cui l'oggetto di destinazione ha un'annotazione @Loggable
  • qualsiasi join point in cui il metodo in esecuzione ha un'annotazione @Loggable
  • qualsiasi metodo che implementa Loggable
  • qualsiasi metodo che estende Loggable

Differenza tra @target e @within (Spring AOP)

Q54. Cosa viene stampato quando questo codice viene eseguito come @SpringBootApplication?

@Component
public class Test implements InitializingBean {
     @Autowired
     ApplicationContext context;

     @Autowired
     SimpleDateFormat formatter;

     @Override
     public void afterPropertiesSet() throws Exception {
          System.out.println(context.containsBean("formatter"));
          System.out.println(formatter.getClass());
     }
}
@Configuration
class TestConfig2 {
    @Bean
    public final SimpleDateFormat formatter() {
        return new SimpleDateFormat();
    }
}
  • vero <br />   class java.text.SimpleDateFormat <br />
  • vero <br />   SimpleDateFormat <br />
  • uno stacktrace di NullPointerException
  • uno stacktrace di BeanDefinitionParsingException

Spiegazione: il metodo @Bean in @Configuration deve essere sovrascrivibile. Rimuovi la parola chiave final per risolvere.

Q55. Qual è lo scopo di un contesto dell'applicazione Web?

  • Configura un'applicazione web che può essere eliminata e ricreata durante l'esecuzione tramite hot swap. Aggiunge un metodo recreateContext() e definisce un WebDaemon radice che deve essere collegato nel processo di avvio.
  • Configura un'applicazione Spring che può essere modificata in modo dinamico durante l'esecuzione tramite ricodifica del bytecode. Aggiunge anche un metodo updateContext() e definisce un WebServlet radice che deve essere collegato nel processo di avvio.
  • Fornisce la configurazione per un'applicazione web che è di sola lettura durante l'esecuzione. Inoltre, aggiunge un metodo getServletContext() e definisce un nome attributo a cui il contesto radice deve essere collegato nel processo di avvio.
  • Fornisce la configurazione per un'applicazione Spring che può essere aggiornata dinamicamente durante l'esecuzione attraverso il tessuto di bytecode. Inoltre, aggiunge un metodo updateServletContext() e definisce un servlet radice che deve essere collegato nel processo di avvio.

Q56. Cos'è Spring AOP?

  • La programmazione orientata agli aspetti consente la modularizzazione delle preoccupazioni trasversali in modo che la logica ripetitiva, come il codice di registrazione, non inquini la logica di business.
  • La programmazione orientata agli aspetti consente di definire diversi aspetti trasversali che isolano i bean per essere disponibili solo in determinati ambienti e profili.
  • La programmazione orientata agli aspetti consente di eseguire il profiling, che consente di sviluppare diversi profili di ottimizzazione delle prestazioni del JVM per diversi aspetti delle applicazioni.
  • La programmazione orientata agli aspetti consente di persistere dati trasversali attraverso frammenti modularizzati del database.

Q57. Supponendo che l'autenticazione con nome utente e password sia in atto, quale metodo sull'oggetto di autenticazione può essere utilizzato per ottenere il nome utente?

  • getPrincipal
  • getUsername
  • getUser
  • getDn

Q58. Supponendo che non venga fornita alcuna configurazione aggiuntiva, qual è il primo criterio di selezione utilizzato da Spring per scegliere un bean durante l'autowiring di una proprietà?

  • nome del bean
  • tipo di bean
  • dimensione del bean
  • Nessuna delle opzioni sopra

Q59. Qual è il risultato della chiamata del metodo controller della mappa utilizzando la seguente richiesta HTTP?

POST localhost:8080/map
{"b" : "b", "d" : "d"}
@RestController
public class SampleController {
    @RequestMapping("/map")
    public String map(@RequestBody SampleObject sampleObject) {
        return sampleObject.getB() + sampleObject.getC();
    }
}
public class SampleObject {

    String b;
    String c;

    public String getB() { return b; }

    public void setB() { this.b = b; }

    public String getC() { return c; }

    public void setC() { this.c = c; }
}
  • Viene generata un'eccezione InvalidRequestBody in fase di esecuzione.
  • Viene generata un'eccezione MissingProperty in fase di esecuzione.
  • Nel corpo della risposta viene restituito il testo "bnull".
  • Nel corpo della risposta viene restituito il testo "a".

Q60. Qual è l'effetto di private static sull'oggetto service qui sotto?

@SpringBootApplication
public class Question14 {
    @Autowired
    private static Service service;

    public static void main(String[] args) {
        SpringApplication.run(Question14.class, args);
    }
}

@Component
class Service {}
  • L'applicazione genererà un errore di compilazioneperché service è iniettato in modo statico.
  • L'applicazione genererà un errore di runtime perché service è iniettato in modo statico.
  • L'applicazione funzionerà correttamente e restituirà un riferimento a Service.
  • L'applicazione funzionerà correttamente ma service sarà nullo.