Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

Powerful programming with Groovy/Grails

No description
by

Dmitry Voloshko

on 11 June 2014

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of Powerful programming with Groovy/Grails

Powerful programming
with Groovy/Grails

Closure's Delegate
Operator Overloading
Grails and Hibernate
Define the behaviour
of any class
AST Transformation
Groovy is a powerful language that gives the opportunity to its users to plugin into the compilation process to create what we call AST transformations
Closures are reusable code blocks in Groovy. The code of the closure is executed against the delegate of the closure. By default the owner of the closure is the same as the delegate, but we can change this. We can define which object is the delegate for a closure, so we can change the object the closure is executed for.
Groovy supports operator overloading which makes working with Numbers, Collections, Maps and various other data structures easier to use.

Various operators in Groovy are mapped onto regular Java method calls on objects.
AST Transformation
Agenda
AST Transformation
Define the behaviour of any class
Closure's Delegate
Operator Overloading
Grails and Spring
Grails and Hibernate
Who am I?
Java
Groovy
Grails
Spring
Hibernate
Spock
JUnit
Swing
6+ years' experience
Agile
Design Patterns
Maven
2+ years' experience
3 years' experience
Dmitry Voloshko
Also know buzzwords
Scrum
@Category
@Mixin
@Delegate
@Immutable
@Newify
@PackageScope
@Singleton
@InheritConstructors
@TupleConstructor
@TypeChecked
@CompileStatic
@AutoClone
ExpandoMetaClass
Static Methods
Methods
Interfaces
Dynamic Method Names
Constructors
Borrowing Methods
Metaprogramming is the writing of computer programs that write or manipulate other programs (or themselves) as their data, or that do part of the work at compile time that would otherwise be done at runtime
Closure Delegate
Closure Delegation Resolve Strategy
Closure
a + b
a - b
a * b
a ** b
a / b
a % b
a | b
a & b
a++ or ++a
a-- or --a
a[b]
a[b] = c
a << b
a >> b
switch(a) { case(b) : }
-a
~a
+a
Questions
Grails and Spring
Useful structure of Grails app
What should I say?
Any?
Sure?
OK
Configuring Additional Beans
Property Placeholder Configuration
Property Override Configuration
MVC
Dynamic methods
Criteria
Named Query
Controller's Handler Argument
Commands Object
Transients properties
Relationship
Full transcript