Java class 用@Creatable 注释在其他插件上注入时缺少属性 class

Java class annotated with @Creatable is missing attributes when injected on other plugin class

我有一个 e4 应用程序项目,其中包含以下项目

应用程序

app.feature

app.product

app.releng

然后 2 个插件项目

app.service

app.ui

我在处理程序上创建了一个简单的登录对话框页面,我在这个对话框上注入了服务,然后它在服务器上成功进行了身份验证。

@Creatable
public class AuthenticationService {

    @Inject
    public AuthenticationService() {

    }

    private Token token;

    public Token getToken() {
        return token;
    }

    private void setToken(Token token) {
        this.token = token;
    }

    public Token authenticate(String username, String password) {


    //authenticate and set token here
    }
}

问题是,当我在部件 class 上注入相同的身份验证服务时,检索到的令牌为空。我在 class 部分需要它,因为我将调用另一个 REST 服务来显示要显示的项目列表。

对话框和部分 class 位于 app.ui 插件项目中,而身份验证服务位于 app.service 插件项目中

如果您只使用 @Creatable,则每次注入时都会创建一个 class 的新实例。此处您希望只有一个服务实例 class 以便每次都获得相同的实例。

为此指定 @Singleton 注释:

@Creatable
@Singleton
public class AuthenticationService {