不同的 spring 配置文件角色



我正在使用Spring Framework + Spring Security + Hibernate进行数据访问(ORM)+ Maven作为构建管理器来开发基于Spring的Web应用程序。所有数据访问操作必须由 Hibernate 提供。

我的目标是集成Spring Security,Spring Framework和Hibernate,以便协同工作。我阅读了许多相应的教程,但令我困惑的是(在教程代码中)我的项目中缺少许多 xml 配置文件。这是我的项目结构

正如你所看到的,只有两个与 Spring 相关的 xml 文件和 web.xml - 当我向项目添加 Spring 框架和 Spring 安全支持时,它们都是由 Spring 自动生成的。

但是在提到的教程中,还有名为"spring-database.xml"、"spring-security.xml"的文件。我认为第一个是配置 Spring 以从数据库中获取数据,第二个只是基本的 Spring 安全配置。文件。

问题:
1)这两个文件不是自动生成的,即使是"spring-security.xml"。可以吗 - 它必须像它一样吗?还是我的项目设置有问题?

2)如果我可以随心所欲地命名这些xml配置文件 - 那么Spring如何知道它们并区分它们?我只是在官方的 Spring 参考文档中没有找到任何关于具有此类名称的配置文件的信息。

回答问题2,如果可能的话,请举例说明。

3) 我的应用程序上下文文件为空 - 可以吗?如果它和调度程序-servlet 之间的区别呢?

提前谢谢你!

> 1)我一般只需要一个 spring 配置文件,它通常放在src/main/resources(或类路径的其他地方)中,然后调用applicationContext.xml或类似。如果你使用多个Spring模块(如Spring Data,Spring Security等),通常的做法是为每个模块提供一个单独的配置文件,但这不是必需的,你可以将所有配置放在同一个xml中。

2)命名无关紧要,Spring 在类路径中查找文件:https://softwareengineering.stackexchange.com/questions/145545/where-to-put-spring-configuration-file

3)通常,applicationContext.xml包含要扫描注释的bean和软件包的定义,应该放在src/main/resources中。我想调度程序-servlet.xml用于URI/servlet映射(Spring mvc)

您的项目结构没有问题。不强制要求具有项目中的文件名。如果你想为xml文件有自己的名称,你必须在web.xml中提到xmls的名称。见下文

 <context-param>
   <param-name>contextConfigLocation</param-name>
   <param-value>
    /WEB-INF/dispatcher-servlet.xml
    /WEB-INF/spring-security.xml
  </param-value>
 </context-param>

来到第三个问题,applicationContext.xml不应该为空。你需要在applicationContext.xml中指定应用程序的bean(服务、dao等)。在 dispatcher-servlet 中.xml您需要指定与 spring mvc 相关的 bean(处理程序映射、控制器、视图解析器等)。