스프링부트

0

SpringBoot

목록 보기
2/12

@SpringBootApplication

  • 이 어노테이션이 ComponentScan과 Configuration(자바 설정파일에 붙여야하는 어노테이션)을 상위 클래스로 가지고 잇음.
  • @SpringBootApplication이 스프링 부트를 이용할 때 설정파일임
    이 안에 @Bean을 만들면 됨.
  • Indicates a configuration class that declares one or more @Bean methods and also triggers auto-configuration and component scanning.
    This is a convenience annotation that is equivalent to declaring @Configuration, @EnableAutoConfiguration and @ComponentScan.

  • @ComponentScan(basePackages= {"컨테이너명"}) :
    basePackages에 정의해놓은 클래스를 찾아와서 스프링 컨테이너에 빈으로 등록 할 것이다.
    • 기본 스프링 레거시에서 작성했던 설정파일(@Configuration)을 끌고옴

  • dependency 추가하고 싶으면

  • 프로젝트 우클릭 - Spring- Add Starters

  • 원하는 디펜던시 검색 후 추가, 그 다음 페이지는 pom.xml이 어떻게 바뀔거야~ 하는거니까 pom.xml 체크버튼 누르고 finish.

  • 검색해도 안나오면 maven repository에서 찾아서 직접 pom.xml에 추가

  • WebInitialize
    : 특정 클래스(AbstractAnnotationConfig...)로 부터 상속받아서 web.xml을 대신하는 클래스

  • 스프링부트에서는 사용하지 않고 DemoApplication.java가 있는 패키지에 ServletInitializer라는 클래스를 만들고

package com.example.demo;

import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;

public class ServletInitializer extends SpringBootServletInitializer {

	@Override
	protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
		return application.sources(DemoApplication.class);
	}

}
  • SpringBootServletInitializer로부터 상속받는다는게 중요하다.
    • An opinionated WebApplicationInitializer to run a SpringApplication from a traditional WAR deployment.
      Binds Servlet, Filter and ServletContextInitializer beans from
      스프링 부트 웹을 사용하기 위해서는 ServletInitializer 클래스가 필요하고 이는 SpringBootServletInitializer를 상속받는데,
      이는 WebApplicationInitializer의 효과를 내고, WAR형태로 배포되기 위해서는 SpringBootServletInitializer라는 부모가 필요하다.
  • 스프링 부트에는 톰캣이 embedded 돼있기 때문에 톰캣서버를 따로 설치 하지 않아도 되고 얘가 port가 8080으로 기본적으로 설정돼있음

  • spring-boor-starter-web에 톰캣이 내장. 톰캣서버를 시작시켜서 스프링 웹 컨테이너를 구동시키도록 MyServletContext.java와 ServletInitailzer.java에 저장돼있음

  • 자바파일에 포트번호를 설정하면 또 자바를 실행시켜야 하는 불편함이 있기때문에
    xml이 아닌 application.properties또는 javaConfiguration에 설정하는데, 이중에서 가벼운 설정파일은 application.properties에 설정한다.

  • 포트번호를 9999로 변경.

  • 로그를 살펴보면 9999로 실행되고 있고, context path '' : ''를 root path라고 한다.

  • root path를 변경하려면 server.servlet.context-path=/원하는root를 추가

  • com.example.demo의 하위패키지는 컴포넌트 스캔 안해도 된다
    -> 자동 컴포넌트 스캔됨.
    -> 패키지 구성이 중요하다!

  • 패키지를 구성할 때, 부모패키지 안에 하위패키지로 꼭 넣는것이 아니라 ComponentScan(basePackages= {"container", "com.example.demo.control"}) 처럼 다른 패키지로 구성해도 끌어올 수 있음!

    • 메인패키지 밑에 하위패키지 -> 주패키지 밑에 하위패키지는 자동 컴포넌트 스캔됨!
    • @SpringBootApplication 어노테이션이 붙어있는 DemoApplication이 com.my에 있어야하고 (상위 패키지) 그 밑에 container 패키지(하위)에 설정파일 넣어두면 자동 컴포넌트 스캔!

  • DemoApplication을 com.my안에 넣어놓으면 컴포넌트스캔을 따로 안해도 됨.

profile
백엔드를 공부하고 있습니다.

0개의 댓글