Slide 1

Slide 1 text

objectcomputing.com © 2019, Object Computing, Inc. (OCI). All rights reserved. No part of these notes may be reproduced, stored in a retrieval system, or transmitted, in any form or by any means, electronic, mechanical, photocopying, recording, or otherwise, without the prior, written permission of Object Computing, Inc. (OCI) Micronaut + Groovy

Slide 2

Slide 2 text

© 2018, Object Computing, Inc. (OCI). All rights reserved. © 2018, Object Computing, Inc. (OCI). All rights reserved. objectcomputing.com 2 • MICRONAUT / GRAILS OCI TEA M • GUADALAJARA, SPAI N • CURATOR OF GROOVYCALAMARI.COM • GREACH Conference organize r • @SDELAM O • HTTPS://SERGIODELAMO.COM SERGIO DEL AMO

Slide 3

Slide 3 text

© 2019, Object Computing, Inc. (OCI). All rights reserved. objectcomputing.com 3 MICRONAUT IS LANGUAGE AGNOSTIC

Slide 4

Slide 4 text

© 2019, Object Computing, Inc. (OCI). All rights reserved. objectcomputing.com 4 MICRONAUT IS TEST FRAMEWORK AGNOSTIC

Slide 5

Slide 5 text

© 2019, Object Computing, Inc. (OCI). All rights reserved. objectcomputing.com 5 Micronaut + Groovy ♥

Slide 6

Slide 6 text

© 2019, Object Computing, Inc. (OCI). All rights reserved. objectcomputing.com 6 MICRONAUT IS WRITTEN WITH JAVA. IT IS TESTED WITH SPOCK

Slide 7

Slide 7 text

© 2019, Object Computing, Inc. (OCI). All rights reserved. objectcomputing.com 7 MICRONAUT LAUNCH - GROOVY/SPOCK

Slide 8

Slide 8 text

© 2019, Object Computing, Inc. (OCI). All rights reserved. objectcomputing.com 8 MICRONAUT CLI - GROOVY/SPOCK

Slide 9

Slide 9 text

© 2019, Object Computing, Inc. (OCI). All rights reserved. objectcomputing.com 9 Groovy Specific Modules Dependency Description micronaut-inject-groovy Include AST transformations to generate bean definitions. Should be compileOnly on your classpath. micronaut-runtime-groovy Adds the ability to specify configuration placed in src/main/resources in Groovy format (i.e. application.groovy) micronaut-function-groovy Include AST transforms that make it easier to write Functions for AWS Lambda

Slide 10

Slide 10 text

© 2019, Object Computing, Inc. (OCI). All rights reserved. objectcomputing.com 10 Groovy Specific Modules

Slide 11

Slide 11 text

© 2019, Object Computing, Inc. (OCI). All rights reserved. objectcomputing.com 11 Singleton ⚠ Make sure to use javax.inject.Singleton when declaring a singleton bean. Groovy automatically imports groovy.lang.Singleton

Slide 12

Slide 12 text

© 2018, Object Computing, Inc. (OCI). All rights reserved. objectcomputing.com 12 Configuration

Slide 13

Slide 13 text

© 2019, Object Computing, Inc. (OCI). All rights reserved. objectcomputing.com 13 src/main/resources/application.groovy

Slide 14

Slide 14 text

© 2018, Object Computing, Inc. (OCI). All rights reserved. objectcomputing.com 14 Routing

Slide 15

Slide 15 text

© 2019, Object Computing, Inc. (OCI). All rights reserved. objectcomputing.com 15 Using Groovy Route Builder

Slide 16

Slide 16 text

© 2019, Object Computing, Inc. (OCI). All rights reserved. objectcomputing.com 16 Using Groovy Route Builder

Slide 17

Slide 17 text

© 2019, Object Computing, Inc. (OCI). All rights reserved. objectcomputing.com 17 Using @GET @POST @PUT annotations

Slide 18

Slide 18 text

© 2018, Object Computing, Inc. (OCI). All rights reserved. objectcomputing.com 18

Slide 19

Slide 19 text

© 2019, Object Computing, Inc. (OCI). All rights reserved. objectcomputing.com 19 Test Dependencies org.spockframework:spock-core 2.0-M3-groovy-3.0 org.codehause.groovy:groovy 3.0.4

Slide 20

Slide 20 text

© 2019, Object Computing, Inc. (OCI). All rights reserved. objectcomputing.com 20 @AutoCleanup and @Shared

Slide 21

Slide 21 text

© 2019, Object Computing, Inc. (OCI). All rights reserved. objectcomputing.com 21 @AutoCleanup and @Shared

Slide 22

Slide 22 text

© 2019, Object Computing, Inc. (OCI). All rights reserved. objectcomputing.com 22 @AutoCleanup and @Shared

Slide 23

Slide 23 text

© 2019, Object Computing, Inc. (OCI). All rights reserved. objectcomputing.com 23 Spock Mocks

Slide 24

Slide 24 text

© 2018, Object Computing, Inc. (OCI). All rights reserved. objectcomputing.com 24

Slide 25

Slide 25 text

© 2019, Object Computing, Inc. (OCI). All rights reserved. objectcomputing.com 25 geb-spock dependencies

Slide 26

Slide 26 text

© 2019, Object Computing, Inc. (OCI). All rights reserved. objectcomputing.com 26 src/test/resources/GebConfig.groovy

Slide 27

Slide 27 text

© 2019, Object Computing, Inc. (OCI). All rights reserved. objectcomputing.com 27 Webdriver binaries plugin

Slide 28

Slide 28 text

© 2019, Object Computing, Inc. (OCI). All rights reserved. objectcomputing.com 28

Slide 29

Slide 29 text

© 2018, Object Computing, Inc. (OCI). All rights reserved. objectcomputing.com 29

Slide 30

Slide 30 text

© 2019, Object Computing, Inc. (OCI). All rights reserved. objectcomputing.com 30 GORM Modules Dependency Description micronaut-hibernate-gorm Configures GORM for Hibernate for Groovy applications micronaut-mongo-gorm Configures GORM for Mongo DB for Groovy applications micronaut-neo4j-gorm Configures GORM for Mongo DB for Groovy applications

Slide 31

Slide 31 text

© 2019, Object Computing, Inc. (OCI). All rights reserved. objectcomputing.com 31 Micronaut + GORM Hibernate

Slide 32

Slide 32 text

© 2019, Object Computing, Inc. (OCI). All rights reserved. objectcomputing.com 32 Hibernate GORM Feature

Slide 33

Slide 33 text

© 2019, Object Computing, Inc. (OCI). All rights reserved. objectcomputing.com 33 Hibernate GORM Feature

Slide 34

Slide 34 text

© 2019, Object Computing, Inc. (OCI). All rights reserved. objectcomputing.com 34 Hibernate GORM | Package scanning

Slide 35

Slide 35 text

© 2019, Object Computing, Inc. (OCI). All rights reserved. objectcomputing.com 35 Entities

Slide 36

Slide 36 text

© 2019, Object Computing, Inc. (OCI). All rights reserved. objectcomputing.com 36 Transaction demarcation ⚠ Each method that interacts with GORM should be annotated with GORM's grails.gorm.transactions.Transactional to ensure a session is present. You can also add the @Transactional annotation to the class.

Slide 37

Slide 37 text

© 2019, Object Computing, Inc. (OCI). All rights reserved. objectcomputing.com 37 GORM Data services are registered automatically a singleton beans

Slide 38

Slide 38 text

© 2019, Object Computing, Inc. (OCI). All rights reserved. objectcomputing.com 38

Slide 39

Slide 39 text

© 2018, Object Computing, Inc. (OCI). All rights reserved. objectcomputing.com 39 Validation

Slide 40

Slide 40 text

© 2019, Object Computing, Inc. (OCI). All rights reserved. objectcomputing.com 40 Validation

Slide 41

Slide 41 text

© 2018, Object Computing, Inc. (OCI). All rights reserved. objectcomputing.com 41 Multi-Tenancy

Slide 42

Slide 42 text

© 2019, Object Computing, Inc. (OCI). All rights reserved. objectcomputing.com 42 GORM Multitenancy

Slide 43

Slide 43 text

© 2018, Object Computing, Inc. (OCI). All rights reserved. objectcomputing.com 43 GORM MULTITENANCY https://gorm.grails.org/latest/hibernate/ manual/index.html#multiTenancy

Slide 44

Slide 44 text

© 2018, Object Computing, Inc. (OCI). objectcomputing.com 44 GORM Multi-tenancy ● Configure Multitenancy Mod e ● Configure Tenant Resolve r ● Configure Domain classes which you want to be regarded as multi tenant. ● User Tenants.* or Multi-tenancy Transformations.

Slide 45

Slide 45 text

© 2018, Object Computing, Inc. (OCI). All rights reserved. © 2018, Object Computing, Inc. (OCI). All rights reserved. objectcomputing.com 45 Multi-tenancy modes Modes Description DATABASE Separate database with a separate connection pool is used to store each tenants data. SCHEMA The same database, but different schemas are used to store each tenants’ data. DISCRIMINATOR The same database is used with a discriminator used to partition and isolate data.

Slide 46

Slide 46 text

© 2018, Object Computing, Inc. (OCI). All rights reserved. © 2018, Object Computing, Inc. (OCI). All rights reserved. objectcomputing.com 46 Multi-tenancy modes - Data isolation Modes Isolation DATABASE SCHEMA DISCRIMINATOR

Slide 47

Slide 47 text

© 2018, Object Computing, Inc. (OCI). All rights reserved. objectcomputing.com 47 MULTI-TENANCY PROPAGATION src/main/resources/application.yml

Slide 48

Slide 48 text

© 2018, Object Computing, Inc. (OCI). All rights reserved. objectcomputing.com 48 DOMAINS MULTI-TENANCY

Slide 49

Slide 49 text

© 2018, Object Computing, Inc. (OCI). All rights reserved. objectcomputing.com 49 DOMAINS - PARTITIONED MULTI-TENANCY

Slide 50

Slide 50 text

© 2018, Object Computing, Inc. (OCI). All rights reserved. © 2018, Object Computing, Inc. (OCI). All rights reserved. objectcomputing.com 50 Multi-tenancy transformations Transformation Description @CurrentTenant Resolve the current tenant for the context of a class or method @Tenant Use a specifc tenant for the context of a class or method @WithoutTenant Execute logic without a specific tentnat (using the default connection)

Slide 51

Slide 51 text

© 2018, Object Computing, Inc. (OCI). All rights reserved. objectcomputing.com 51 DOMAINS - PARTITIONED MULTI-TENANCY

Slide 52

Slide 52 text

© 2019, Object Computing, Inc. (OCI). All rights reserved. objectcomputing.com 52 Multi-Tenancy GORM - Tenant Resolvers Name Description Cookie Tenant Resolver Removes the current tenant from an HTTP cookie Fixed Tenant Resolver Resolves against a fixed tenant id HttpHeaderTenantResolver Resolves the current tenant from the request HTTP Header PrincipalTenantResolver Resolves the current tenant from the authenticated username SessionTenantResolver Resolves the current tenant from the HTTP Session SubdomainTenantResolver Resolves the tenant id from the subdomain SystemPropertyTenantResolver Resolves the tenant id from a system property

Slide 53

Slide 53 text

© 2019, Object Computing, Inc. (OCI). All rights reserved. objectcomputing.com • gitter.im/micronautfw • docs.micronaut.io • guides.micronaut.io • micronaut.io/faq.html • github.com/micronaut-projects/micronaut-core • github.com/micronaut-projects/micronaut-examples • objectcomputing.com/products/micronaut • [email protected] Micronaut Resources 53

Slide 54

Slide 54 text

CONNECT WITH US 1+ (314) 579-0066 @objectcomputing objectcomputing.com © 2019, Object Computing, Inc. (OCI). All rights reserved. objectcomputing.com 54 Questions?