Module 2: Spring Flashcards

1
Q

Wat is Inversion of Control (IoC)?

A

Een ontwikkelconcept die de controle flow van het traditionele procedural programming omdraait: In plaats van generieke taken aan te roepen vanuit de eigen code, roept het framework de eigen code aan.

In het Spring framework betekent dit dat je de controle over het maken en instantiëren van de beans aan de Spring IoC-container geeft.

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

Hoe implementeert Spring IoC?

A

Middels Dependency Injection en zogeheten beans.

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

Wat zijn de voordelen van IoC?

A
  • Minder code; de generieke taken worden buiten het component aangeroepen en componenten hoef je niet zelf op te bouwen en te configureren.
  • Beter testbaar doordat je een mock of stub kan injecteren. De componenten hoeven niet zelf instanties aan te maken van objecten.
  • De code kan zich richten op één taak, dus betere en overzichtelijke codemeer specifiek zijn kunnen ze beter worden hergebruikt
  • Loose coupling: componenten hebben geen kennis of benodigdheden van onderdelen in andere componenten
  • Lifecycle: er kan worden gezorgd dat de componenten correct worden geïnitialiseerd en afgesloten.
  • Doordat de componenten minder generieke taken hebben kunnen ze makkelijker worden herbruikt.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Wat is Dependency Injection (DI)?

A

Dependency Injection is een techniek waarbij objecten worden geleverd die een object nodig heeft (zijn afhankelijkheden) in plaats van ze zelf te laten construeren.

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

Welke injection types bestaan er?

A
  • Constructor injection
  • Field injection (field or setter)
  • Interface injection (Not supported by Spring)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Welk injection type is minder flexibel?

A
  • Field injection. (not setter)

It is harder to inject through a field injection than a (public) constructor/method.

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

Wat is de application lifecycle? (De applicatiecontext lifecycle)

A
  • Initialization
  • Use
  • Destruction

Bij de initialisatie wordt de context opgezet. Vervolgens is Use waar de applicatie is opgestart en gebruikt kan worden. Bij het afsluiten van de Spring applicatie is het soms nog nodig om bijvoorbeeld connecties af te sluiten wat mogelijk is in de Destruction fase.

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

Wat is de bean lifecycle?

A

Spring instantieert de Bean

Spring injecteert waarden en Bean referenties in de properties van de Bean

Als de Bean BeanNameAware implementeert: Spring geeft het Bean ID (naam) mee via de setBeanName() methode.

Als de Bean BeanFactoryAware implementeert: Spring geeft de Bean factory mee via de setBeanFactory() methode.

Als de Bean ApplicationContextAware implementeert: Spring geeft de omvattende application context mee via de setApplicationContext() methode.

Als de Bean BeanPostProcessor implementeert: Spring roept de postProcessBeforeInitialization() methode aan.

Als de Bean InitializingBean implementeert: Spring roept de afterPropertiesSet() methode aan. Vergelijkbaar: Spring roept de init-method aan indien deze is gespecificeerd.

Als de Bean BeanPostProcessor implementeert: Spring roept de postProcessAfterInitialization() methode aan.

Bean is klaar voor gebruik.

Als de Bean de DisposableBean interface implementeert: Spring roept de destroy() methode aan.

Spring roept de custom destroy-method aan, indien deze is gespecificeerd.

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

Wat zijn de bean scopes?

A
  • Singleton
  • Prototype
  • Request
  • Session
  • GlobalSession
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Wat zijn Spring profiles?

A

Met Spring profiles kunnen beans worden toegewezen aan verschillende profielen, bijvoorbeeld dev, test en prod.

Een spring profiel kan worden ingesteld op klasse-niveau of op methode-niveau.

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

Welke drie manieren zijn er om beans te definieren?

A
  • Via XML
  • Via Configuratie klassen waar methodes beans contrueren
  • Via het markeren van klassen als een blueprint voor een bean en Spring deze dan zelf te laten instantiëren via component scanning.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Wat doet de @Autowired annotatie?

A

Met @Autowired injecteert Spring hier automatisch de benodigde bean, of gooit een exceptie als er geen bean is gevonden.

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

Wat doet de @Component annotatie?

A

@Component (of een variant daar van): klasse welke gebruikt kan worden door het Spring Framework wanneer binnen een package welke staat aangegeven in een @ComponentScan

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

Wat doet de @Qualifier annotatie?

A

@Qualifier: geeft aan welke bean geinjecteerd moet worden indien meerdere beans zijn gevonden.

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

Wat doet de @Resource annotatie?

A

@Resource: Een annotatie van JSR-250, doet hetzelfde als de combinatie va @Autowired en @Qualifier

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

Wat doet de @Required annotatie?

A

@Required kan worden gebruikt boven een methode om te vereisen dat de methode wordt aangeroepen tijdens de initialisatie van de Bean.

17
Q

Wat doet de @Scope annotatie?

A

@Scope stelt de scope in van een Bean.

18
Q

Wat doet de @Bean annotatie?

A

@Bean kan worden gebruikt voor het definiëren van een bean in een configuratie klasse.

19
Q

Wat doet de @DependsOn annotatie?

A

@DependsOn zorgt ervoor dat de aangegeven bean eerst geinitialiseerd wordt.

20
Q

Wat doet de @Lazy annotatie?

A

@Lazy verlaagt de start up tijd door de bean te initialiseren bij het eerste gebruik

21
Q

Wat doet de Singleton bean scope?

A

Met de Singleton scope wordt een Bean eenmalig aangemaakt en vervolgens over de hele applicatie gebruikt.

22
Q

Wat doet de Prototype bean scope?

A

Met de Prototype scope wordt er een aparte instantie aangemaakt voor elke plek waar de Bean wordt geïnjecteerd.

23
Q

Wat doet de Request/session bean scope?

A

Met de Request/session scope wordt er een instantie van de Bean aangemaakt voor een request of sessie.

24
Q

Wat is de ApplicationContext?

A

De ApplicationContext vertegenwoordigt de Spring IoC-container en is verantwoordelijk voor het instantiëren, configureren en samenstellen van de beans.

25
Q

What is the Spring Framework?

A

Het Spring Framework is een Java-platform dat infrastructuurondersteuning biedt voor het ontwikkelen van Java-applicaties. Spring regelt de infrastructuur zodat ontwikkelaars zich kunnen concentreren op het maken van de applicatie.

26
Q

About how many modules does the Spring Framework consist?

A

20

27
Q

What are the (groups of) Spring modules?

A
  • Core container
  • Test
  • AOP & Instrumentation
  • Data access / Integration
  • Web
28
Q

What modules does the Core container group consist of?

A
  • Core
  • Beans
  • Context
  • Expression Language
29
Q

What modules does the Data access/Integration container group consist of?

A
  • JDBC
  • ORM
  • OXM
  • JMS
  • Transactions
30
Q

What modules does the Web container group consist of?

A
  • Web
  • Servlet
  • Portlet
  • Struts
31
Q

Wat is de ApplicationContext?

A

De Application Context is de IoC container van Spring. Net als bij BeanFactory kan het bean definities optuigen, beans koppelen aan elkaar (middels DI) en op verzoek beans afgeven.

32
Q

Wat doet de @ControllerAdvice annotatie?

A

Een @ControllerAdvice stelt ons in staat om de retourwaarden van controllermethoden te onderscheppen en te wijzigen.

ControllerAdvice klassen stellen ons in staat om exception-handlers toe te passen op meer dan één of alle controllers in een applicatie.

33
Q

Wanneer moeten we de ExceptionHandlerExceptionResolver-klasse uitbreiden?

A

Als we niet-afgevangen exceptions willen vergelijken met @ExceptionHandler-methoden op zowel de handler (controller) als op eventuele ControllerAdvice klassen.

34
Q

Wanneer moeten we de ResponseStatusExceptionResolver-klasse uitbreiden?

A

Als we excepties willen afvangen op basis van de @ResponseStatus annotatie, kunnen we ResponseStatusExceptionResolver gebruiken.