Restapi en service architectuur

TransferObject

Controller

Service interface

Converters

(Domain object)

DAO

Component (jar)

@Security

@Transactional

@Caching

Domain object

@Autowired

@Autowired

@Autowired

Service implementatie

Algemeen

RestAPI

CampaignTO

CampagneController

CampaignServiceImpl

CampagneConverter

CampagneDao

wise-marketing-service.jar

@HasPermission(#campagne,'MANAGER_BEHEER_CAMPAGNES_C)

Campagne

CampaignTOConverter

(Campagne)

@Autowired

@Autowired

@Transactional(propagation=Propagation.REQUIRED)

CampaignService interface

Voorbeeld

RestAPI

RestAPI

  • Controllers
  • Converters
  • Transfer Objects
  • Exceptions + handlers
  • Configuratiefiles
  • Enkele utility classes

 

Alles wat niet onder bovenstaande valt hoort in principe elders

Controller

  • @Autowire alleen service interfaces, geen implementaties en zeker geen DAO's
  • Converteer domein objecten naar transfer objecten en v.v.
  • Blokkeer zo nodig niet ingelogde gebruikers met @PreAuthorize("isAuthenticated") 
  • Api documentatie ook toegankelijk voor externe partijen
  • Alleen logica om vanuit een request de benodigde service endpoint aan te roepen. Geen bedrijfsregels.

 

Transfer Object

  • Wordt alleen gebruikt in Controllers en Converters
  • Gekoppeld aan een URI
  • Registratie van links naar gerelateerde informatie
  • Eigendom van de restapi

Converter

  • Wordt alleen gebruikt binnen Controllers
  • Converteert een domein object naar een transfer object of andersom
  • Eigendom van de restapi

Service

Interface

  • Beschrijft welke processen er zijn voor het functionele domein
  • Bevat per proces annotaties die aangeven wie onder welke condities toegang heeft
  • Applicaties gebruiken de interfaces, Spring configuratie zorgt voor autowiring van de implementatie

Implementatie

  • De java code beschrijft hoe de processen moeten worden uitgevoerd
  • Per proces annotaties mogelijk m.b.t transactionaliteit en/of caching

DAO

Interface

  • Beschrijft welke aanroepen mogelijk zijn naar de database
  • Alleen de service implementaties mogen de DAO's autowiren.

XML mapper file

  • Bevat de SQL expressies die op de database moeten worden uitgevoerd
  • Namen van expressies komen overeen met de namen van de interface methods

Domein Object

  • Wordt door de service methods gebruikt voor communicatie met gebruikers van de service
  • Mag via DAO uit database komen, maar hoeft niet

deck

By Jan Peter Tamminga