spring

스프링부트 - 1

Dec 22, 2019

스프링부트 - 1

목차

1. 스프링 부트 시작해보기
2. 스프링 부트 원리
3. 스프링 부트 활용

1. 스프링 부트 시작해보기

Intellij Ultimate로 생성하거나 Initializr사이트에서 프로젝트생성하고 다운로드 받는다.

1.1 jar패키징, 실행

  1. 터미널에서 ‘mvn package’ 입력한다.
  2. jar 파일을 실행한다. ‘java -jar /target/demospringboot-0.0.1-SNAPSHOT.jar
  3. http://localhost:8080/ 으로 들어가 whitelabel page 확인
  4. Ctrl + C 로 jar 실행 중지

1.2 스프링 부트 프로젝트 구조

메이븐 기본 프로젝트 구조와 동일

메인 애플리케이션 위치 (psvm이 있는 class)

2. 스프링 부트 원리

2.1 의존성 관리 이해

document

pom.xml > spring-boot-starter-parent > spring-boot-dependencies
하나씩 타고 올라가 보면 의존성들이 다 정의되어 있다.

우리가 직접 관리해야 할 의존성들이 줄어 들어 관리하기 편하다.

2.1 의존성 관리 응용

2.2 자동 설정 이해

@SpringBootApplication
public class Application {

public static void main(String[] args) {
  SpringApplication.run(DemospringbootApplication.class, args);

  // 위의 코드와 같다.
  SpringApplication application = new SpringApplication(Application.class);
  // 웹으로 실행하고 싶지 않은 경우
  //application.setWebApplicationType(WebApplicationType.NONE);
  application.run(args);
}

}

2.3 스프링 부트 원리 정리

스프링 부트 원리 정리

3. 스프링 부트 활용

3.1 SpringApplication - 1

https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-spring-application.html#boot-features-spring-application

SpringApplication.run()... 
// 스프링 애플리케이션이 제공하는 커스텀 기능을 사용하기 어려우므로 
@SpringBootApplication
public class Application {
	public static void main(String[] args) {
		SpringApplication app = new SpringApplication(Application.class);
		app.run(args);
	}
}
public static void main(String[] args) {
		new SpringApplicationBuilder()
        .main(SpringApplication.class)
        .banner(...)
        .run(args);
}

3.2 SpringApplication - 2

public class SimpleListener implements ApplicationListener<ApplicationStartingEvent> {

    @Override
    public void onApplicationEvent(ApplicationStartingEvent applicationStartingEvent) {
        System.out.println("=======================");
        System.out.println("Application is starting");
        System.out.println("=======================");
    }
}

@SpringBootApplication
public class Application {

	public static void main(String[] args) {
		//SpringApplication.run(Application.class, args);
		SpringApplication app = new SpringApplication(Application.class);
		app.addListeners(new SimpleListener());
		app.run(args);
	}

}

애플리케이션 구동 전에 sout 메시지 찍힘.

@Component
public class SimpleListener implements ApplicationListener<ApplicationStartedEvent> {

    @Override
    public void onApplicationEvent(ApplicationStartedEvent applicationStartedEvent) {
        System.out.println("=======================");
        System.out.println("Application is starting");
        System.out.println("=======================");
    }
}

애플리케이션이 모두 구동된 두에 sout 메시지가 나온다.

SpringApplication app = new SpringApplication(Application.class);
app.setWebApplicationType(WebApplicationType.NONE);
// WebApplicationType : NONE, SERVLET, REACTIVE
// servlet이 있기 때문에 webflux가 있어도 default는 servlet이다.