在开发 Grails 3.0 插件时:
- 应该如何定义域,以便应用程序可以使用插件对其进行扩展?
- 插件如何引用扩展类的实例?
例如,安全插件可以具有以下类:
用户.groovy
package com.example.plugins.security
class User {
String email
String hash
Boolean enabled = true
}
安全服务.groovy
package com.example.plugins.security
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder
class SecurityService {
def authenticate(String email, String password) {
def user = User.findByEmail(email) //instance of BookstoreUser???
def encoder = new BCryptPasswordEncoder()
return user && encoder.matches(password, user.hash) ? user : null
}
}
该应用程序将具有一个域,例如:
grails-app/domain/com/example/bookstore/BookstoreUser.groovy
package org.example.bookstore
import org.bson.types.ObjectId
import org.example.plugins.security.User
class BookstoreUser extends User {
ObjectId id
String firstName
String lastName
static mapWith = "mongo"
}