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
deck
- 185