Module 5: Business Logic Flashcards
Welke vijf verschillende Spring annotaties worden gebruikt om aan te geven dat een class door spring opgenomen moet worden in de applicatiecontext?
- @Component (any component)
- @Repository (Data access)
- @Controller (Spring MVC)
- @Service (Service classes)
- @Configuration (Java Config)
Waar bestaan de drie lagen uit? (3-Lagen-architectuur)
- Front-end
- Applicatielaag
- Datalaag
Onder welke drie lagen is de applicatielaag te verdelen?
- Controllerlaag
- Servicelaag
- Repositorylaag
Waarom verdelen we de applicatielaag?
We verdelen de applicatielaag in drie lagen zodat we loose coupling creëren. Dit zorgt ervoor dat we weten in wat voor laag we bepaalde logica verwachten waardoor de onderhoudbaarheid ook beter wordt.
Waar is de datalaag verantwoordelijk voor?
De datalaag is verantwoordelijk voor dataintegriteit, ervoor zorgen dat de data op de goede manier opgeslagen word en weer opgehaald kan worden.
Waar is de servicelaag verantwoordelijk voor?
De servicelaag is verantwoordelijk voor transactie management, beveiliging en de caching van resultaten.
Wat is Aspectgeoriënteerd programmeren?
Aspectgeoriënteerd programmeren is een programmeringsparadigma dat tot doel heeft de modulariteit te vergroten. Het is een uitbreiding op de bekende manieren van programmeren, waarbij het mogelijk wordt om een stuk code A “in te lassen” in een ander stuk code B zonder dat B een zichtbare verwijzing heeft naar A.
Het is belangrijk op te merken dat aspectgeoriënteerd programmeren niet een paradigma is dat andere paradigmata vervangt. AOP is bedoeld als een strikte uitbreiding op bestaande programmeertechnieken.
Waar kan je AOP voor gebruiken?
- Audit logging (acties loggen).
- Code coverage: door te kijken welke functies allemaal uitgevoerd worden.
- Prestatiemeting: door te meten hoelang het duurt voordat een functie returnt nadat je hem hebt aangeroepen. Dit kan je bijvoorbeeld doen bij een functie die met de database communiceert om te kijken of de bottleneck bij de database ligt of in je code.
- Caching (het cachen van data)
Wat is MapStruct?
MapStruct is een open-source codegenerator die code creëert voor mapping-implementaties. Het maakt gebruik van annotatieverwerking om implementaties van mapper-klassen te genereren tijdens het compileren en vermindert de hoeveelheid standaardtekst die regelmatig met de hand zou worden geschreven aanzienlijk.
Wat is een Pointcut in AOP?
PointCut is een set van één of meerdere JoinPoints waar een advice moet worden uitgevoerd. U kunt PointCuts specificeren met behulp van expressies of patterns.
Wat is een JoinPoint in AOP?
Een JoinPoint vertegenwoordigt een punt in uw applicatie waar u het AOP-aspect kunt inpluggen. Je kunt ook zeggen dat dit de daadwerkelijke plaats in de applicatie is waar een actie wordt ondernomen met behulp van het Spring AOP-framework.
- Alle methodeklassen in een pakket(ten).
- Een bepaalde methode van een klasse.
In Spring AOP vertegenwoordigt een join-punt altijd een methode-uitvoering.
Wat is een Advice in AOP?
Een advice is een actie van een aspect op een bepaald join point.
Verschillende soorten advice omvatten “around”, “before” en “after” advice. Veel AOP-frameworks, waaronder Spring, modelleren een advies als een interceptor, waarbij een keten van interceptors rond het verbindingspunt wordt onderhouden.
Waarom AOP gebruiken?
- Vergroot modulariteit
- Verwijder boilerplate code
- Vergroot begrijpbaarheid en onderhoudbaarheid
Wanneer caching gebruiken?
- Performance: Als je weet wat een methode retourneert, dan bespaart het een hoop tijd als we de methode niet uitvoeren maar meteen de data returnen.
- Data beschikbaarheid. Als een achterliggend systeem eruit ligt kan je nog data retourneren
Waar in de applicatie willen we caching het liefst toepassen?
We doen caching het liefst zo hoog mogelijk in de applicatie. Hoe eerder we cachen, hoe meer we de achterliggende systemen kunnen ontlasten. Hele HTTP-verzoeken kunnen op deze manier gecachet worden. In de praktijk zie je het vaak tussen de controller en service laag zodat het resultaat van de service gecachet wordt.