2016-03-29 7 views
-1

Я новичок в разработке приложений 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 class, и webAppInitializer способен с той же функциональностью, что и так implement WebApplicationInitializer. за исключением configure method in servletInitializer class.

Что происходит с travellingApplication class с аннотацией @SpringBootApplication это simmilar к моему webConfig Class, которая простирается WebMvcConfigureAdapter

ответ

1

Оба класса загружать контекст Spring приложения.

Класс с основным методом (TravellingApplication) будет использоваться, если вы запустите приложение как обычное java-приложение. Например, если вы используете «Запуск как -> Java applciatnion» из Eclipse или если вы упаковываете приложение как банку и запускаете java -jar myApp.jar из командной строки.

SpringBootServletInitializer будет использоваться для загрузки контекста приложения, если вы упакуете приложение в качестве военного файла и развернете его в Tomcat или другом веб-сервере, который поддерживает Servlet 3.0+. Он в основном заменяет web.xml.

Я действительно не понимаю, что происходит внутри метода configure в моем классе servletinitializer.

TravellingApplication класс @Configuration - он объявляет пружину бобы и другую конфигурацию Spring, так что эта линия - return application.sources(TravellingApplication.class); просто загружает эту конфигурацию (контекст приложения). То же самое происходит в основном методе.

Что происходит с классом travellingApplication с аннотацией @SpringBootApplication это simmilar к моему WebConfig класса, который расширяет WebMvcConfigureAdapter

@SpringBootApplication это просто ярлык для

@Configuration 
@EnableAutoConfiguration 
@ComponentScan 

here См.

+0

поэтому u означает, что метод 'configure' загружает« контекст приложения ».то же самое происходит в «основном методе», что означает, что я могу удалить «основной метод» из этого класса и использовать этот класс для «конфигурации», как я сделал в своем «классе WebConfig» – Priyamal

+1

@Priyamal Да, но так вы необходимо развернуть приложение на внешнем веб-сервере и не использовать встроенный веб-сервер, как с основным методом. –

Смежные вопросы