gpt4 book ai didi

java - 注入(inject)有问题

转载 作者:行者123 更新时间:2023-12-04 09:15:40 25 4
gpt4 key购买 nike

我有一个问题,第一次尝试注入(inject)失败但第二次没有。我的应用程序是这样布局的(这是一个在 Eclipse 中使用 Maven 的 Java EE 应用程序):

@Stateful
@Named("myBean")
@SessionScoped

public class MyBean implements Serializable {

@Inject
private User user;
...

@PostConstruct
public String init() {
.. do some general tasks, no issues here.
}

public String initApplication() { // this gets called on page load
String userId = user.getId();
...
}

.... in another class...

@Produces
@SessionScoped
@Named("user")
public User produceUser() {
// code to create user is here
}
症状:我启动浏览器,清除缓存,启动应用程序。我在 user 上得到一个空值 @Produces方法永远不会被调用。我再次调用相同的 URL 来启动应用程序,然后它就可以工作了。

最佳答案

@Produces 结合使用时,命名注入(inject)在某些 EE 服务器上可能会有些不稳定。 .不仅如此,它实际上还创建了一个完全独立的具有歧义的实例。因此,如果您在其他地方的 session 范围内定义了用户 bean,则它们被视为两种不同的注入(inject)源。也许这就是正在发生的事情,当你重新加载时它会拿起第二个?
如果您离开 @Produces 会发生什么? (删除 produceUser() )而是这样做;

@Named
@SessionScoped
public class User implements Serializable {
@PostConstruct
private init() {
/* Do what you did in the producer method here */
}
}
这应该真的有效 - 否则会出现严重错误。

关于java - 注入(inject)有问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63234335/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com