【问题标题】:role of configuration classes in spring boot projectsspring boot项目中配置类的作用
【发布时间】:2016-03-29 17:57:06
【问题描述】:

我是 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 WebApplicationInitializerconfigure method in servletInitializer class 除外。

@SpringBootApplication 注释的travellingApplication class 发生了什么,它与我的扩展WebMvcConfigureAdapterwebConfig Class 相似

【问题讨论】:

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


    【解决方案1】:

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

    如果您将应用程序作为普通 java 应用程序运行,则将使用具有 main 方法 (TravellingApplication) 的类。例如,如果您从 Eclipse 执行 Run As -> 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

    【讨论】:

    • 所以你的意思是像 configure 方法加载 application context 。在main method 中发生了完全相同的事情,这意味着我可以从该类中删除main method 并将该类用于configuration,就像我在WebConfig class 中所做的那样
    • @Priyamal 是的,但是那样你必须将应用程序部署在外部 Web 服务器中,并且不能像使用 main 方法那样使用嵌入式 Web 服务器。
    猜你喜欢
    • 1970-01-01
    • 2020-01-14
    • 2022-06-12
    • 2014-12-27
    • 2016-04-28
    • 1970-01-01
    • 2017-03-19
    • 2017-01-04
    • 2017-06-03
    相关资源
    最近更新 更多