Skip to content

Instantly share code, notes, and snippets.

@SpOOnman
Created October 18, 2012 10:40
Show Gist options
  • Save SpOOnman/3910934 to your computer and use it in GitHub Desktop.
Save SpOOnman/3910934 to your computer and use it in GitHub Desktop.
Inconsistent Dependency Injection to domain classes with Grails
class Book {
def libraryService
String author
String title
int pageCount
Book() {
println("Finished constructor Book()")
}
Book(String author) {
this()
this.@author = author
println("Finished constructor Book(String author)")
}
Book(String author, String title) {
super()
this.@author = author
this.@title = title
println("Finished constructor Book(String author, String title)")
}
Book(String author, String title, int pageCount) {
this.@author = author
this.@title = title
this.@pageCount = pageCount
println("Finished constructor Book(String author, String title, int pageCount)")
}
void logInjectedService() {
println(" Service libraryService is injected? -> $libraryService")
}
}
class BookController {
def index() {
constructAndExamineBooks()
}
static constructAndExamineBooks() {
println("Started constructAndExamineBooks")
Book book1 = new Book().logInjectedService()
Book book2 = new Book("foo").logInjectedService()
Book book3 = new Book("foo", 'bar').logInjectedService()
Book book4 = new Book("foo", 'bar', 100).logInjectedService()
Book book5 = new Book(author: "foo", title: 'bar')
println("Finished constructor Book(Map params)")
book5.logInjectedService()
}
}
class LibraryService {
def serviceMethod() {
}
}
Started constructAndExamineBooks
Finished constructor Book()
Service libraryService is injected? -> eu.spoonman.refaktor.LibraryService@2affcce2
Finished constructor Book()
Finished constructor Book(String author)
Service libraryService is injected? -> eu.spoonman.refaktor.LibraryService@2affcce2
Finished constructor Book(String author, String title)
Service libraryService is injected? -> null
Finished constructor Book(String author, String title, int pageCount)
Service libraryService is injected? -> null
Finished constructor Book()
Finished constructor Book(Map params)
Service libraryService is injected? -> eu.spoonman.refaktor.LibraryService@2affcce2
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment