Module 8: Spring Boot Flashcards

1
Q

Wat is Spring Boot?

A

Spring Boot is een framework dat is gemaakt om een Spring applicatie op te zetten en werkend te krijgen met minimale configuratie.

In Spring Boot zit standaard ondersteuning voor SQL en NoSQL databases en levert het geintegreerde runtimes mee zoals Tomcat en Jetty.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Wat zijn de doelen van Spring Boot?

A
  • Toegankelijk en snel
  • Standaardinstellingen
  • Niet-functionele features
  • Geen codegeneratie of XML-configuratie nodig
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Wat zijn de concepten van Spring Boot die verschillen van Spring?

A
  • Starters
  • Embedded servers
  • Starter parent
  • Auto configuratie: Spring Boot doet een hoop van de configuraties die bij een hoop Spring projecten elke keer gedaan moeten worden uit zichzelf. Hiervoor worden standaarden gebruikt die je kan overriden in de properties of door zelf beans aan te maken.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Welke spring boot starters zijn er?

A
  • spring-boot-starter-web
  • spring-boot-starter-jersey
  • spring-boot-starter-log4j2
  • spring-boot-starter-activemq
  • spring-boot-starter-jpa
  • spring-boot-starter-security
  • spring-boot-starter-test

De embedded server starters zijn:

  • spring-boot-starter-tomcat
  • spring-boot-starter-jetty
  • spring-boot-starter-undertow
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Wat is de autoconfiguratie feature van Spring Boot?

A

Bij Spring Boot is het makkelijk om snel een nieuwe applicatie werkend te hebben door de auto-configuratie. Zoals te zien in de vorige modules had elk component wel een bean nodig of andere configuratie. In Spring Boot worden een hoop van deze standaard configuraties automatisch uitgevoerd. Deze standaarden zijn te overschrijven met de properties of YAML-bestanden.

Voorbeelden:
Bij de webstarter wordt er automatisch een dispatcherservlet opgezet, er wordt een default error pagina gecreëerd.

Bij de JPA-starter worden er automatisch een datasource bean en entitymanager ingesteld.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Wat doet de Spring Boot annotatie @EnableConfigurationProperties en wat is het voordeel hiervan?

A

Deze annotatie biedt een manier om properties bestanden te vertalen naar POJO’s.

Wat er handig is aan deze manier is dat er bijvoorbeeld in de code validatieregels kunnen worden toegepast op de properties.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Wat doet de Spring Boot plugin?

A

Uber-jar
Normaal gesproken bij het maken van een jar bestand wordt alleen de eigen code in de jar verpakt. Bij deployment is het daarom nodig om zelf nog alle dependency jars toe te voegen aan de folder. Bij deze uber jar worden de dependencies meeverpakt waardoor je een bestand kan deployen die werkt.

Runnable class
Om zo'n jar te kunnen uitvoeren moet er ook bekend zijn wat de entry point is. Spring zorgt ervoor dat de public static void main wordt gemarkeerd als entry point.

Dependency resolver
De dependency resolver zorgt ervoor dat de versies van de verschillende dependencies goed samenwerken.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Wat zijn de voordelen van Spring data ten opzichte van handmatig gebruik van JPA?

A

Het gebruik van Spring Data reduceert een hoop boilerplate code die benodigd was bij elke repository. De standaard acties zoals opzoeken d.m.v. de primary key, ophalen van alle records, updaten en deleten zijn allemaal verwerkt in een generic class.

Bij Spring Data is het alleen nodig om de dependency toe te voegen en vervolgens doet de autoconfiguratie al de rest voor integratie.

Ten slotte is het met Spring Data mogelijk om dynamisch query’s te schrijven.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Welke typen repositories kunnen gebruikt worden met Spring Data?

A
  • CrudRepository
  • PagingAndSortingRepository
  • JpaRepository
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Welke type repository kan het best gebruikt worden bij een nieuw project?

A

Bij het beginnen met een nieuw project is het altijd het beste om te beginnen met een CrudRepository en pas te upgraden als de functionaliteiten benodigd zijn.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Wat is Dynamic Query Derivation?

A

Met het gebruik van keywords kunnen dynamisch query’s worden opgesteld.

Een voorbeeld hiervan is de find … by. Spring filtert deze bekende keywords er uit en parsed de query die daaruit overblijft. Daardoor is het mogelijk om zoals in het voorbeeld woorden te gebruiken die niet bekend zijn als findPeopleBy. Daarbij kunnen nog wel keywords als Distinct gebruikt worden, maar de echte filtercriteria komen pas na de eerste By.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Wat is Query By Example?

A

Soms is het nodig om een query uit te voeren met filters die je een andere keer niet gebruikt. Hiervoor is Query By Example een goede keuze. De naam zegt het al, je geeft een voorbeeld mee van het object waar je naar zoekt. Hier kan je met matchers nog filters op uitbreiden.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Wat zijn Specifications (Spring Data queries)?

A

Een alternatieve manier voor het bouwen van filters.

Hierbij is het nodig om een klasse aan te maken waarin methodes staan die een Specification teruggeven. Met behulp van de criteriabuilder kan er binnen de methode een filter worden ingesteld. Het resultaat hiervan is dat je, bij gebruik van goede methodebenamingen, een query krijgt die leesbaar is.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Wat is de @Query annotatie?

A

Met de @Query annotatie kunnen we gebruikmaken van JPQL of een native query.

voorbeeld: @Query(value = “FROM User u WHERE name = :name”)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Waar bestaat een JWT uit?

A
  • header
  • payload
  • signature
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Waar is de JWT mee versleuteld?

A

Base64

17
Q

In welke HTTP request header + value gaat JWT mee?

A

Authorization: Bearer

18
Q

Wat zijn de voordelen van JWT?

A
  • Geen sessie om te beheren (stateless)
  • Draagbaar: een enkele token kan worden gebruikt met meerdere backends.
  • Geen cookies nodig, dus zeer mobielvriendelijk
  • Goede prestaties: het vermindert de reistijd van het netwerk.
  • Ontkoppeld/gedecentraliseerd: het token kan overal worden gegenereerd. Verificatie kan plaatsvinden op de bronserver of eenvoudig worden gescheiden in zijn eigen server.
19
Q

Wat is het verschil tussen autorisatie en authenticatie?

A

Authenticatie bevestigt dat gebruikers zijn wie ze zeggen dat ze zijn. Autorisatie geeft die gebruikers toestemming om toegang te krijgen tot een bron.

20
Q

Wat zijn Spring Boot starters?

A

Waar het met het Spring Framework nodig was om een aantal dependencies toe te voegen om een database connectie te kunnen maken, heeft boot deze dependencies gebundeld. Deze bundels worden ook wel starters genoemd en zijn tevens op elkaar afgestemd.

21
Q

Wat is een JWT claim?

A

claims zijn stukjes informatie over de subject. Een claim wordt weergegeven als een key/value-pair waarbij de key altijd een string is en de value elke JSON-waarde kan zijn.

22
Q

Wat is het SpringApplication object?

A

Een klasse die kan worden gebruikt om een ​​Spring-toepassing op te starten en te starten vanuit een Java-main methode

23
Q

Welke stappen voert SpringApplication uit?

A
  • Maak een geschikte ApplicationContext-instantie (afhankelijk van de classpath)
  • Registreert een CommandLinePropertySource om commandline argumenten als Spring-properties weer te geven
  • Vernieuwt de applicatiecontext en laad daarmee alle singleton beans
  • Activeert alle CommandLineRunner-beans
24
Q

Wat is de CrudRepository?

A

De CrudRepository geeft de basis Create, Read, Update en Delete functionaliteiten. Deze repository is generiek waardoor het makkelijk is om de database type te veranderen zonder dat het effect heeft op de repository’s.

25
Q

Wat is de PagingAndSortingRepository?

A

Deze repository overerft de CrudRepository en voegt daar extra functionaliteit aan toe. Zo wordt het hiermee mogelijk om ingewikkelde sorteringen en paginering te gebruiken.

26
Q

Wat is de JpaRepository?

A

Dit is de meest uitgebreide repository en overerft PagingAndSortingRepository. Deze geeft meer controle over de entity manager en maakt het daarmee mogelijk om te flushen of data op te slaan in batches.

27
Q

Wat doet de @SpringBootApplication annotatie?

A

De @SpringBootAnnotatie doet het volgende:

  • @EnableAutoConfiguration
  • @ComponentScan
  • @Configuration
28
Q

Wat doet de @EnableAutoConfiguration?

A

Schakelt automatische configuratie van de Spring-toepassingscontext in, waarbij het probeert de beans te raden en te configureren die nodig zijn. Klassen voor automatische configuratie worden meestal toegepast op basis van uw classpath en welke beans zijn gedefinieerd

29
Q

Waar wordt spring-boot-starter-web voor gebruikt?

A

Voor het bouwen van de webapplicatie, inclusief RESTful-applicaties met Spring MVC. Het gebruikt Tomcat als de standaard imbedded container.

30
Q

Waar is @SpringBootTest handig voor?

A

Voor wanneer we de hele container willen bootstrappen.

We kunnen het webEnvironment attribuut van @SpringBootTest gebruiken om onze runtime-omgeving te configureren; we gebruiken hier WebEnvironment.MOCK zodat de container in een mock-servlet-omgeving zal werken.

31
Q

Wanneer is Query By Example een goede keus?

A

Wanneer het soms nodig is om filter te gebruiken, en andere keren niet.

32
Q

Wat is het voordeel van Specifications voor data queries?

A

Het voordeel is dat je, bij gebruik van goede methodebenamingen, een query krijgt die leesbaar is.