gpt4 book ai didi

java - Spring : Need for the contextConfigLocation?

转载 作者:行者123 更新时间:2023-11-30 07:01:52 24 4
gpt4 key购买 nike

web.xml 中,我们有名为 contextConfigLocation 的上下文参数集,定义如下面的代码所示:

<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/root-context.xml</param-value>
</context-param>

在 Dispatch Servlet 中也设置了相同的参数,如下所示

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

这两个 contextConfigLocation 有什么区别?

最佳答案

  • context-param 中的 contextConfigLocation 在我们启动时加载Web 容器或服务器
  • 通常有DAOImpl、Service、Singleton、Datasource辅助对象等,我们希望事先准备好这些对象,以便可以使用它们

  • init-param 中的 contextConfigLocation 仅特定于 DispatcherServlet,并在 Servlet 启动时立即加载,这可能是延迟加载,即在第一次调用 Servlet 时,如果启动时加载不是该 servlet 的正值。
  • 这意味着,此处定义的 Bean 可能会在以后创建。它通常包含 Controller Beans 等

  • 在 context-param ContextXml 中定义的 Beans 对定义的 Beans 可见在初始化参数 ContextXml 中
  • 但是 init-param 中定义的 Beans 对 context-param 是不可见的上下文 bean
  • 所以@Controller Bean 通常定义在ChildApplicationContext 而@Service 是RootApplicationContext 的一部分
  • 这意味着不能在@Service中注入(inject)@C​​ontroller虽然我们可以很容易地在@Controller 中注入(inject)@Service Bean

So basically we control Visibility (not scope ) of Beans by having different context-config files

关于java - Spring : Need for the contextConfigLocation?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29513607/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com