当我将spring-servlet.xml保存在Web应用程序中时,没有加载applicationContext.xml

时间:2015-11-24 23:47:46

标签: java spring-mvc jpa web-applications applicationcontext

我正在使用eclipse中的Web应用程序。 弹簧MVC网络应用程序将被准确。 我创建了servlet xml并将其映射到web.xml中。 一切都很好,直到这里和Servlet加载HTML页面 但现在我想添加一个JPA图层。 所以我在WEB-INF中创建了applicationContext.xml,并将所有与JPA相关的spring配置放在该文件中。 但是,当我启动我的Web应用程序时,JPA相关的东西没有被加载。 我相信,applicationContext.xml本身没有被加载。 我在这里缺少任何想法或任何其他配置?

2 个答案:

答案 0 :(得分:3)

  

除非您在applicationContext.xml或其他类似配置文件中配置spring ContextLoaderListener,否则默认情况下不会加载web.xml文件。

我假设applicationContext.xml文件夹中存在WEB-INF

  <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener
        </listener-class>
    </listener>
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
        /WEB-INF/applicationContext.xml
    </param-value>
    </context-param>

如果您有多个配置文件,可以将它们指定为,分隔值,如

<param-value> classpath:applicationContext.xml, classpath:securityContext.xml </param-value>

答案 1 :(得分:1)

您之前的配置似乎有效,因为您为调度程序servlet提供了与其关联的应用程序上下文的命名格式匹配的名称。

现在,由于您要加载根Web应用程序上下文,您需要在web.xml中定义名为ContextLoaderListener的侦听器,默认情况下将从/WEB-INF/applicationContext.xml中读取上下文定义

                        <asp:Repeater ID="rptrCategory" runat="server"
                            OnItemCommand="rptrCategory_ItemCommand">

                            <ItemTemplate>

                                    <asp:LinkButton CssClass='<%# (Container.ItemIndex==0)?"active clsCategory":"clsCategory" %>' ID="lnkCategory" runat="server" CommandName="Category" CommandArgument='<%# DataBinder.Eval(Container.DataItem,"CategoryID")%>' Text='<%# DataBinder.Eval(Container.DataItem,"Category")%>'></asp:LinkButton>

                            </ItemTemplate>
                        </asp:Repeater>

                <asp:UpdatePanel runat="server" ID="UpdatePanel" UpdateMode="Conditional">
                    <Triggers>
                        <asp:AsyncPostBackTrigger ControlID="rptrCategory" />
                    </Triggers>
                    <ContentTemplate>
                                <asp:Repeater ID="rptrQuestion" runat="server">
                                    <ItemTemplate>

                                                <a href="javascript:void(0)" onclick="javascript:addQuestion(escape('<%# Convert.ToString(DataBinder.Eval(Container.DataItem,"Question")).Replace("'","\\'") %>'));">
                                                <asp:Label ID="litQuestion" runat="server" Text='<%# DataBinder.Eval(Container.DataItem,"Question")%>'></asp:Label>
                                                <asp:Literal ID="litAlter" runat="server" Text='<%# GetAlterText(Convert.ToInt32(Eval("QuestionID")), Eval("AlterText").ToString(), Eval("AlterInfo").ToString()) %>'></asp:Literal>

                                    </ItemTemplate>
                                </asp:Repeater>
                    </ContentTemplate>
                </asp:UpdatePanel>