【问题标题】:How does Spring 3.1 Java based configuration workSpring 3.1 基于 Java 的配置如何工作
【发布时间】:2012-10-03 08:47:10
【问题描述】:

当您定义基于 Java 的配置 Web 应用程序时,这只是一个一般性问题。即有一个类:ApplicationContext 和一个 WebApplicationInitializer 类。

Spring 怎么知道它必须加载 bean,因为没有 xml 配置文件存在.. 没有 web.xml,tomcat 如何知道关于 webapp 的任何信息

这是一个新手问题.. 我很感激。 :)

【问题讨论】:

  • Spring 中基于 Java 的配置与 web.xml 无关...所以有一个。
  • 好吧..我只是想比较一下..如果我正在创建一个 web.xml 我会创建一个调度程序并让 servlet 知道应用程序上下文 xml 的位置在哪里。但是在基于 java 的配置中.. 它是如何工作的?

标签: spring-mvc spring-3


【解决方案1】:

this blog post from SpringSource blog,关于web.xml的重要部分有一个例子,基本上你在DispatcherServlet<init-param>中指向JavaConfigWebApplicationContext而不是默认的XmlWebApplicationContext

<web-app>
    <!-- Configure ContextLoaderListener to use JavaConfigWebApplicationContext
         instead of the default XmlWebApplicationContext -->
    <context-param>
        <param-name>contextClass</param-name>
        <param-value>org.springframework.config.java.context.JavaConfigWebApplicationContext</param-value>
    </context-param>
    <!-- Configuration locations must consist of one or more comma- or space-delimited
         fully-qualified @Configuration classes -->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>example.RootApplicationConfig</param-value>
    </context-param>
    <!-- Bootstrap the root application context as usual using ContextLoaderListener -->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <!-- Declare a Spring MVC DispatcherServlet as usual -->
    <servlet>
        <servlet-name>dispatcher-servlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!-- Configure DispatcherServlet to use JavaConfigWebApplicationContext
             instead of the default XmlWebApplicationContext -->
        <init-param>
            <param-name>contextClass</param-name>
            <param-value>org.springframework.config.java.context.JavaConfigWebApplicationContext</param-value>
        </init-param>
        <!-- Again, config locations must consist of one or more comma- or space-delimited
             and fully-qualified @Configuration classes -->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>example.web.WebBeansConfig</param-value>
        </init-param>
    </servlet>
</web-app>

【讨论】:

【解决方案2】:

如果您已启动并运行 Maven,我有一个非常好的方法可以帮助您学习 Spring MVC。

如果是这样:转到我使用的命令行 (Cygwin)...

  1. mvn 原型:生成
  2. 它将要求一个“原型编号”。为你...输入 16
  3. 输入只是主包的组 ID。
  4. 输入工件 ID,即您的项目名称。
  5. SNAP-SHOT --- 只需按 Enter 键,与版本相同。
  6. Package - 与您的组 ID 名称相同。例如:com.spring
  7. 输入字母“y”进行确认,然后按回车键。

在您进入工作区目录后执行上述所有操作。这样它就在那里创建了。
您可以执行“mvn eclipse:eclipse”在 Eclipse 中加载它,或者您可以只导入它。我更喜欢老式的导入现有项目。

一切都将“已经”为您设置好所有配置(基于 Java),这对您有好处。它将在您的 pom.xml 中包含您需要的所有 Maven 依赖项。如果需要,您可以添加或从中获取。

这里的重点是您已经有一个正在运行的项目,您可以从那里开始使用它。我首先像这样创建我的所有项目并删除我不需要的并添加我所做的然后从那里开始。

祝你好运!!!

Anywho...将此添加到您的 web.xml。这将帮助您回答问题。研究以下内容:

<context-param>
    <param-name>contextClass</param-name>
    <param-value>
        org.springframework.web.context.support.AnnotationConfigWebApplicationContext
    </param-value>
</context-param>
<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2021-02-22
  • 1970-01-01
  • 2013-03-13
  • 1970-01-01
  • 2017-07-08
  • 1970-01-01
  • 2014-04-14
  • 2017-04-25
相关资源
最近更新 更多