SpringBoot 시작 및 자동 조립 원리

A, servlet2 (옛 스프링 MVC)

  1. 프로필 :
  • web.xml의 : 주요 구성 항목 시작 항목
  • 응용 프로그램의 context.xml : 메인 스캔 패키지 구성 항목, 콩의 모든 종류의 트랜잭션 관리
  • springMVC.xml : ViewResolver를 스캔 주요 구성 컨트롤러 패키지 파라미터 파서
  1. 과정을 시작합니다
  • 각 프로젝트는 초기화 스프링 컨텍스트 시작에 봄, 초기화 과정이 아닌 웹 프로젝트의 프로그램 기본 방법의 맥락에서 트리거 할 수 있어야합니다.
  • 입구 웹 컨테이너에서 프로젝트의 시작부터, 개발자가 직접적으로 트리거 초기화 스프링 컨텍스트, 우리는 용기와 강한 협회의 프로세스 초기화 과정을 시작해야 할 수 있도록.
  • 컨테이너가 시작 구문 분석 web.xml 파일로드로 인해, 그것은 정확하게 web.xml의 관계를 구축 할 수있는 좋은 장소입니다. ContextLoadListener 포인트 구성 web.xml에 컨테이너를 청취 스프링 컨텍스트를 초기화하는 것으로 시작이 연결된다.
  • DispatcherServlet을 글로벌 핵심 컨트롤러이기 때문에, 모든 요청은 자신의 개시시기를 구성 할 필요가 있으므로, 기본은 요청의 첫 번째 인스턴스 그것에서 오는, 절편 그것을 할 필요가있다.
  • 그러나,이 컨테이너 초기화를 시작하도록 구성 할 수 있습니다, 초기화 과정의 DispatcherServlet springMVC.xml는 매핑 컨트롤러, 뷰 해상도, 그래서 매개 변수 분석을 완료, 구성 파일을 읽을 수 있습니다.

두, servlet3

  1. Servlet3는 클래스 경로에서 현재 프로젝트는, META-INF는 / 서비스 / javax.servlet.ServletContainerInitializer 구성 파일, 파일 이름 ServletContainerInitializer는 전체 클래스 구현 클래스가 쓴 경우, 클래스 메소드 때 컨테이너를 시작합니다 onStartup 달성하는 것을 제공 그것은이라고합니다. 봄 ServletContainerInitializer 인터페이스 클래스 org.springframework.web.SpringServletContainerInitializer 배치된다.
  2. 상기의 스프링이 주석에 기초 ServletContainerInitializer @HandlesTypes을 (WebApplicationInitializer.class) 달성하기 위해 제공되고, 주석 브래킷 WebApplicationInitializer 인터페이스 어셈블리 프로젝트 구현하는 모든 클래스들은 SpringServletContainerInitializer의 onStartup 방법 이송 세트 인 것 통화의 경우 11 onStartup 방법 으로서는, WebApplicationInitializer 클래스 인터페이스가 제공된다 SpringBoot SpringBootServletInitializer 이때 항목에 스프링 contextdispatcherServlet 초기화 동작은,이 방법에 따라서 치환 web.xml에 배치 될 수있다.
  3. @Configuration 주석으로 필요 스프링 애플리케이션의 context.xml 빈 용기에 붓고 구성해야만하고 대응하는 XML 구성 파일을 교체 하였다.
  4. 주요 기능은 시작 @SpringBootApplication 주석 클래스 @ComponentScan 통합하기 때문에, 모든 기본 시작 클래스 현재 클래스 패킷 및 서브 패킷의 기능 springMVC.xml 치환되는 스캔 @Controller 클래스를 갖는 주사 springMVC.xml이고 가.

세 가지, 봄 부팅 부팅

  1. 스프링 부팅 시작 클래스의 주요 기능을 수행 할 때, 그것은 톰캣 객체를 인스턴스화 한 다음 개체 톰캣 일련의 메서드를 호출합니다
 Tomcat tomcat = new Tomcat();
 tomcat.addWebApp("/", "D:/app/");  //调用此方法是将项目当做web项目放入容器,同时也会触发ServletContainerInitializer的onStartup方法
 tomcat.setPort(8080);
 tomcat.start();
 tomcat.getServer().await();  //启动线程,阻塞等待
  1. 주석을 추가 할 수 @ResponseBody 방법은, 그렇지 않으면 파서를 보려면 메시지 변환 프로세스에 반환 값을 나타냅니다.
@Configuration
public class GsonMessageConverterConfig implements WebMvcConfigurer {

	@Override //自定义消息解析器
	public void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
		converters.add(new GsonHttpMessageConverter());
	}

	@Override //自定义视图解析器
	public void configureViewResolvers(ViewResolverRegistry registry) {
		registry.jsp("/", ".jsp");
	}
}

추천

출처www.cnblogs.com/JaxYoun/p/12597676.html