aba*_*ogh 10
更重要的是,问题应该在哪里:这个'配置数据'究竟是什么?
来自文档:
Spring IoC容器使用一种配置元数据; 此配置元数据表示您作为应用程序开发人员如何告诉Spring容器在应用程序中实例化,配置和组装对象.
传统上,配置元数据以简单直观的XML格式提供,本章大部分内容用于传达Spring IoC容器的关键概念和功能.
但是,您也可以使用注释或基于Java的配置来为POJO提供配置元数据.
在Spring中,构成应用程序主干并由Spring IoC容器管理的对象称为bean.bean是一个由Spring IoC容器实例化,组装和管理的对象.否则,bean只是应用程序中许多对象之一.Bean及其之间的依赖关系反映在容器使用的配置元数据中.
正如Tnem已经提到的,在这里您可以找到如何在不同场景中实例化容器.
这个IoC容器是什么?
IoC(控制反转)和DI(依赖注入)是Martin Fowler创造的术语,关于Spring看到文档的第一部分.
如果您想使用Spring进行开发,我建议您阅读完整的参考资料.
比纯名称更有趣的是如何拆分文件(并为每个部分命名).
如果您有一个没有测试的独立或Web应用程序,那么您可以将所有配置放在一个文件中. - 但没有考试不应该是一个意见.
让我们假设您有一个带有测试的Web应用程序.
然后你应该将配置分成两个文件,一个用于纯java(没有web suff)配置,另一个用于包含WEB应用程序的所有其他内容.
我个人更喜欢将它命名为applicationContext.xml和webmvc-config.xml.
Web配置文件的默认名称(如果没有为Dispatcher Servlet指定)将是/WEB-INF/<servletname>-servlet.xml)
我在classpath:/META-INF/spring目录中找到applicationContext.xml ,在webmvc-config.xml中找到WEB-INF/spring.那个位置是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>
Run Code Online (Sandbox Code Playgroud)
现在,您开始为应用程序的业务逻辑编写测试,而无需加载所有Web内容.但在大多数情况下,这并不是理所当然的.例如,你想在您运行,如MySQL的数据库永久正常应用程序(使用内存数据库运行一些快速测试,请不要怪我那句话),或者你想使用JNDI配置DB的生产和"normal"配置一个用于测试.所以你需要的是两种不同的配置.要写两次不是每件事,最简单的方法是拆分applicationContext.xml两个文件:
applicationContext.xml 对于没有与测试不同的数据库内容的核心内容applicationContext-db.xml 用于高效的db配置(例如,对于db连接的jndi-lookup和用于MySql的LocalContainerEntityManagerFactoryBean)(现在您了解contextConfigLocation了web.xml中的模式)
对于测试,您现在需要两个文件(您可以将它写在一个文件中,但我更喜欢两个).*testContext-h2DbConfig.xml该文件是测试兄弟applicationContext-db.xml,但与测试数据库和没有jndi.*textContext.xml此@ContextConfiguration测试用例中引用的文件.此文件仅包含测试所需的配置导入.在这种情况下,它是:
<import resource="classpath:/META-INF/spring/applicationContext.xml" />
<import resource="classpath:/META-INF/spring/testContext-h2DbConfig.xml" />
Run Code Online (Sandbox Code Playgroud)
因为我使用spring,所以两个文件都位于 /src/test/resources/META-INF/spring/testContext.xml
如果您有弹簧配置的其他方面,测试和生产配置不同(例如调度程序),那么您可以以相同的方式拆分它.
我希望您了解分割,命名约定和位置如何协同工作.
这取决于你的应用程序是什么,有些应用程序支持Spring的配置,在这种情况下你需要检查框架文档。
如果它是一个独立的应用程序那么你可以将文件放在任何地方,但通常它放在
src/main/resources
Run Code Online (Sandbox Code Playgroud)
或 中的子目录resources。
Spring文档的第 3.2.2 节向您展示了如何实例化ApplicationContext.
| 归档时间: |
|
| 查看次数: |
9473 次 |
| 最近记录: |