配置类在Spring启动项目中的作用

时间:2016-03-29 17:57:07

标签: java spring spring-mvc spring-boot java-ee-7

我是springboot应用程序开发的新手,我在这个url https://start.spring.io/的帮助下生成了我的项目,当我在IDE中打开这个项目时,生成了2个类 这是第一堂课

    public class ServletInitializer extends SpringBootServletInitializer   {
    @Override
    protected SpringApplicationBuilder    configure(SpringApplicationBuilder application) {
        return application.sources(TravellingApplication.class);
    }}

这是第二类

@SpringBootApplication
public class TravellingApplication {
public static void main(String[] args) {
    SpringApplication.run(TravellingApplication.class, args);
}}

我真的不知道我configure method班的Servletinitializer内发生了什么。 如果删除这两个类,我可以编写更好的代码配置 并做这样的事情,

 class simmilar to dispatcherservlet.xml

 @Configuration
 @EnableWebMvc
 @ComponentScan(basePackages = "com.travelliing")
 public class WebConfig extends WebMvcConfigurerAdapter {
 }

  class simmilar to web.xml 

public class WebAppInitializer implements WebApplicationInitializer {
@Override
public void onStartup(ServletContext servletContext) throws    ServletException { } 
}
如果我错了,请纠正我。我认为ServletInitializer classwebAppInitializer具有相同的功能,因为不知何故implement WebApplicationInitializer。 除了configure method in servletInitializer class

使用 @SpringBootApplication 注释的travellingApplication class发生的事情与webConfig Class的{​​{1}}类似,扩展了WebMvcConfigureAdapter

1 个答案:

答案 0 :(得分:1)

两个类都加载Spring应用程序上下文。

如果您将应用程序作为普通的Java应用程序运行,将使用带有main方法(TravellingApplication)的类。例如,如果您执行Run As - >来自Eclipse的Java applciatnion,或者将应用程序打包为jar并从命令行运行java -jar myApp.jar

如果将应用程序打包为war文件并将其部署在Tomcat或支持Servlet 3.0+的其他Web服务器中,则将使用SpringBootServletInitializer加载应用程序上下文。它基本上取代了web.xml

  

我真的不知道在configure方法中发生了什么   我的Servletinitializer类。

TravellingApplication是一个@Configuration类 - 它声明了Spring bean和其他Spring配置,所以这一行 - return application.sources(TravellingApplication.class);只加载这个配置(应用程序上下文)。在main方法中发生的事情也一样。

  

使用带注释的travellingApplication类发生了什么   @SpringBootApplication与我的webConfig类相似   扩展WebMvcConfigureAdapter

@SpringBootApplication只是

的捷径
 @Configuration
 @EnableAutoConfiguration
 @ComponentScan

请参阅here