Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring:它从哪里获得ApplicationContext?_Java_Spring_Maven_Spring Mvc_Web - Fatal编程技术网

Java Spring:它从哪里获得ApplicationContext?

Java Spring:它从哪里获得ApplicationContext?,java,spring,maven,spring-mvc,web,Java,Spring,Maven,Spring Mvc,Web,我有一个包含以下代码的Spring项目: @Autowired public void setApplicationContext(ApplicationContext ctx) { // Wiring AppContext.setApplicationContext(ctx); } 它设置applicationContext。从调试器中,我可以看到ctx的类型为annotationEmbeddedWebapplicationContext 我试着查看调用堆栈,看看它从哪里得到

我有一个包含以下代码的Spring项目:

@Autowired
public void setApplicationContext(ApplicationContext ctx) {
    // Wiring
    AppContext.setApplicationContext(ctx);
}
它设置
applicationContext
。从调试器中,我可以看到
ctx
的类型为
annotationEmbeddedWebapplicationContext

我试着查看调用堆栈,看看它从哪里得到这种类型的上下文,而不是其他类型的上下文。但我没能找到它。在此之前的所有调用都是Spring内部调用

这种类型是从哪里来的?这个信息?从
pom.xml
还是其他地方

我的相关
pom
条目:

<!-- Spring Boot Web -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
        </exclusion>
    </exclusions>
</dependency>

org.springframework.boot
SpringBootStarterWeb
org.springframework.boot
弹簧启动机tomcat
当Spring看到
Spring boot starter web
时,它使用那种
applicationContext

您使用的是Spring boot(),这是一种配置和使用Spring应用程序的自以为是的方式。使用boot的优点是,他们的理念是约定优于配置,因此代码很少,您就可以得到很多。这意味着您不需要创建和定义详细的xml配置文件(或java配置文件),因为boot可以为您创建和定义详细的xml配置文件

如果您想覆盖spring boot的某些自动配置,我建议您检查他们的文档:

  • 主要文件:
  • 自定义自动功能:

pom.xml用于使用maven构建应用程序。它在运行时绝对不涉及。在此之前的所有调用都是SPRING内部调用
ApplicationContext
是一个Spring类。这些内部呼叫是您应该关注的。你还没有告诉我们什么类有这个
setApplicationContext
方法。哦,这就是我的情况,对吗?这个项目使用这个spring引导来简化很多配置。取舍不如传统方式灵活。我认为这足够灵活,如果您需要更改spring boot提供的一些(自动)配置,您可以这样做。