【问题标题】:Why Spring @Autowired ApplicationContext appContext is null?为什么 Spring @Autowired ApplicationContext appContext 为空?
【发布时间】:2013-05-29 19:36:09
【问题描述】:

我有带有注释的 Spring bean:

@Named
@Scope("session")

还有这个bean属性:

@Autowired
ApplicationContext appContext;

Spring 配置文件有条目(适用于其他注解/注入):

<context:component-scan base-package="my.package.name" />

为什么appContext在这样的代码和配置之后为空?

我正在尝试获取 ApplicationContext(在其上调用 getBean(...)),这在以前的 Spring 版本中可能是一项非常复杂的任务(从其他讨论来看)(例如,在 Spring Web 应用程序中获取 ServletContext 是必需的)对于不直接访问 HTTP 请求对象的 bean,创建 ApplicationContext 和获取 ServletContext 可能是一项相当复杂的任务)。据我了解,在 Spring 3.x 中,可以使用简单的 @Autwired 注入。 AppContext如何访问?

【问题讨论】:

  • 而不是使用应用程序上下文更好地使用@Autowired来注入/获取bean

标签: spring facelets


【解决方案1】:

这里的第一个问题是您使用的是@Named,它是 Java EE 注释,据我所知,Spring 尚不支持 Java EE 注释。因此,不要使用@Named,而是尝试使用 Spring 注释 @Service、@Component、@Repository 等。

这是我使用 JSF Managed bean 的示例,以展示如何集成 bean。

@ManagedBean(name="myBacking")
@RequestScoped
public class MyBacking {

    private String myText;

    @ManagedProperty(value="#{mySpring}")
    MySpringBean mySpring;

    public String getMyText() {
        myText = mySpring.getText();
        return myText;
    }

    public void setMyText(String myText) {
        this.myText = myText;
    }

    public MySpringBean getMySpring() {
        return mySpring;
    }

    public void setMySpring(MySpringBean mySpring) {
        this.mySpring = mySpring;
    }


}

@Service("mySpring")
@Scope("request")
public class MySpringBean {

    @Autowired
    MySecond mySecond;

    public String getText(){
        return "Hello KP" + mySecond.appObj();
    }

}


@Service
@Scope("request")
public class MySecond {

    @Autowired
    ApplicationContext applicationContext;

    public String appObj(){
        MyThrid mythird =(MyThrid)applicationContext.getBean("myThrid");
        return "My Second Bean calld "+ mythird.getTxt();
    }
}

@Service
public class MyThrid {

    public String getTxt(){
        return "from thrid Bean";
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-04
    相关资源
    最近更新 更多