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 {
我有一个 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 {