0

我正在寻找一种方法让我的 grails-app 的管理员角色向正在运行的服务器添加“功能”/“插件”,以便系统立即使用它。

更具体地说,这里是一个小例子:

package domains

abstract class Provider {

    def protected name;
    def protected activated = false;
    def private valid;

    def Provider( providerName ) {
        if( providerName != null ) {
            name = providerName;
            valid = true;
        else valid = false;
    }

    def isValid() { valid }
    def getName() { name }
    def isActivated() { activated }
    def setActivated( bool ) { activaed = bool }

    abstract List<String> search( String searchKey );
}

一些子类:

package googleprovider

import Provider;

class GoogleProvider extends Provider {

    def GooleProvider( active ) {
        super( "Google" );
        activated = active;
    }

    @Override
    List<String> search( String searchKey ) {
        return ["http://www.google.com"]
    }
}

现在每个“插件”/“功能”都应该从 Provider 扩展,并作为任何文件放置在目录“plugins/providers/”中。

服务器应该在“onAdd”事件或由该管理员控制的事件上创建此 GoogleProvider 的实例。

有没有可能做到这一点?还是我完全在做梦?如果有可能,只是我走错了方向,请告诉我!;-)

谢谢你的时间!

4

1 回答 1

0

我建议您寻找注册新 Artefacts 的插件,因此在您的启动中您可以查找此类。您还可以在 grails-app 中创建一个文件夹来存储提供程序类。

例如,请参阅Grails Dao Artefacts插件。daos它在内部创建文件夹grails-app,并将所有类视为 DAO Artefact。您还可以在您的课程中使用 Depenceny Injection(例如服务)。

需要注意的几点

更多信息在

于 2013-03-20T13:14:49.823 回答