加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

xml – 弹簧配置

发布时间:2020-12-16 08:00:40 所属栏目:百科 来源:网络整理
导读:我一直在阅读Spring,它一直在谈论你需要的spring配置数据,但是你把这个xml文件放在哪里?你把它保存为什么?我似乎无法在任何地方找到这些信息。 比纯粹的名字更有趣的是你如何分割文件(并给每个部分一个名字)。 如果您有独立或Web应用程序进行测试,那么
我一直在阅读Spring,它一直在谈论你需要的spring配置数据,但是你把这个xml文件放在哪里?你把它保存为什么?我似乎无法在任何地方找到这些信息。
比纯粹的名字更有趣的是你如何分割文件(并给每个部分一个名字)。

如果您有独立或Web应用程序进行测试,那么您可以将所有配置放在一个文件中。 – 但没有测试不应该是一个意见。

让我们假设你有一个web应用程序有测试。

那么你应该将配置分成两个文件,一个用于纯java(没有web的)配置,另一个包含WEB应用程序的所有其他东西。

我将其命名为applicationContext.xml和webmvc-config.xml。
Web配置文件的默认名称(如果没有为Dispatcher Servlet指定)将是/WEB-INF/u0026lt;servletnameu0026gt;-servlet.xml)

我在classpath中找到applicationContext.xml:/ META-INF / spring目录和WEB-INF / spring中的webmvc-config.xml。那个地方是Spring Roo的风格。它工作,但每一个其他文件夹也将工作。因为我使用maven文件的确切位置是:

> /src/main/resources/META-INF/spring/applicationContext.xml
> /src/main/webapp/WEB-INF/spring/webmvc-config.xml

核心的applicationContext.xml加载了org.springframework.web.context.ContextLoaderListener和Dispatacher Servlet的webmvc-config.xml。 web.xml中:

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath*:META-INF/spring/applicationContext*.xml</param-value>
</context-param>

<!-- Creates the Spring Container shared by all Servlets and Filters -->
<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<servlet>
    <servlet-name>CFMA-SpringProject</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/spring/webmvc-config.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

现在,您开始为您的应用程序的业务逻辑编写测试,而无需加载所有的Web内容。但是在大多数情况下,这并不是最好的。例如,您希望使用Inmemory数据库运行一些快速测试,同时使用像MySql这样的持久性数据库运行正常的应用程序(请不要怪我的那句话),或者您想在生产中使用jndi配置的数据库“正常”配置一个用于测试。所以你需要的是两种不同的配置。要写不是每一件事两次,最简单的方法是将applicationContext.xml分成两个文件:

> applicationContext.xml为核心的东西,没有db的东西,不同于测试
> applicationContext-db.xml用于生产性数据库配置(例如,用于db连接的jndi-lookup和MySql的LocalContainerEntityManagerFactoryBean)

(现在您了解web.xml中的contextConfigLocation的模式)

对于测试,您现在需要两个文件(您可以在一个文件中写入,但我更喜欢两个)。
* testContext-h2DbConfig.xml作为testContext-db.xml的测试同级的文件,但是带有测试数据库并且没有jndi。
* textContext.xml这个文件在@ContextConfiguration引用的一个测试用例中。此文件仅包含导入测试所需的配置。在这种情况下,它是:

<import resource="classpath:/META-INF/spring/applicationContext.xml" /> 
<import resource="classpath:/META-INF/spring/testContext-h2DbConfig.xml" />

因为我使用spring,这两个文件都位于/src/test/resources/META-INF/spring/testContext.xml中

如果您有弹簧配置的其他方面,测试和生产配置在哪里不同(例如调度程序),则可以以相同的方式进行拆分。

我希望你了解分裂,命名约定和位置如何协同工作。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读