본문 바로가기

컴퓨터공학/Spring & Hibernate

Spring> Spring Boot> Overview and Actuator

Intro

Spring Initializr

 

 

 

snap shot 버전은 테스트 버전이기 때문에 피한다. 

generate 해서 zip 파일을 받고 이클립스에서 existing maven project로 import하면 된다.

 

 

java 버전이 1.8이고 이클립스를 사용하는 경우 pom.xml에서 오류가 나는데 

해결 법은  pom.xml에서 

<properties> 

<java.version>1.8</java.version>

<maven-jar-plugin.version> 3.1.1 </maven-jar-plugin.version>

</properties>

으로 수정하고 maven update를 한다. 

 

 

근데 나는 자바 버전을 11로 해놔서 오류는 없었음.

이전과 다르게 프로젝트가 아니라 클래스 파일을 선택해야 함

 

이게 나오면 성공


REST Controller 

 

 

Server Port already in use

라는 오류가 나오는 경우

엑스 아이콘 두 개짜리 클릭하고 왼쪽에 빨간 네모 terminated를 누르고 다시 실행 ㄱㄱ

 

 


 

장점은 congfiguration 을 일일히 할 필요 없이 쉽게 시작할 수 있다는 점

dependency conflict 가 없다는 점

내장된 HTTP 서버가 있어서 쉽게 시작 가능

 

 

maven wrapper files

mvnw는 무슨 역할을 할까?

maven을 설치할 필요가 없고 경로에 제공할 필요가 없다.

maven에 자동적으로 맞는 버전 라이브러리를 다운로드하고 실행한다.

maven.cmd는 윈도우를 위한 파일이며

내용은 mvnw clean compile test 이다

만약에 maven이 설치되어 있으면 삭제해도 된다. 

 

 

autoconfigure.SpringBootApplication은 

Auto configuration, Component Scanning, Additional configuration 을 가능하게 한다. 

@EnableAutoConfiguration @ComponentScan @Configuration 이다.

 

SpringApplication은 application context를 생성하고 모든 beans를 등록하며 embedded server를 실행한다. 

 

 

 Component Scanning을 하려면 Main Spring Boot application class의 서브 패키지에 둬야 한다. 

패키지 이름은 아무 이름 넣어도 됨

 

 

스캔할 base package list를 명시할 수도 있다.

 

 

 

static 폴더에는 HTML, CSS, JavaScript, images 등등 파일이 있다. 

 

 

application.properties 이 파일에 정보를 쓰고

그냥 블러서 쓰면 된다.

 

 

어플리케이션이 JAR 파일로 package 되더라도 src/main/webapp directory 를 사용하지 말 것

maven directory 이지만 WAR packaging 으로 작동한다.

JAR를 생성해도 빌드툴에 의해 무시된다. 

 

 

template 엔진에 따라  auto configuration을 포함한다.

FreeMarker, Thymeleaf, Mustache 등등

Spring Boot가 resource/templates 폴더에서 불러온다.

  

Spring boot unit test class 는 Spring Initializer 에 의해 생성된다.

 


Spring Boot Starter Parent 

maven 설정 기본값 java 버전이나 utf-encoding 등등 

기본 컴파일러 레벨은 java 8 

오버라이드해서 버전 12로 고칠 수 있음

UTF-8 소스 인코딩

dependencies 에서 spring-boot-starter-* 가 붙은 건 버전을 적지 않아도 된다.

parent에서 버전을 설정하면 상속받기 때문

 

 

Spring boot dev tool

코드가 업데이트되면 어플리케이션을 자동 재시작


Spring boot acuator

어플리케이션 상태 관찰과 관리할 때 사용

어플리케이션 모니터링을 위해 endpoint  

1. pom.xml 에 spring-boot-starter-acuator를 추가한다.

2. /health 와 /info

3. application.properties를 수정한다. 

 

 

2021년 5월 20일 이후로 스프링 부트 2.5에서 /info endpoint가 더 이상 기본으로 나타나지 않음

그래서 설정해줘야 함

management.endpoints.web.exposure.include=health,info

을 application.properties에 추가한다.

 

 

실행 로그를 보면 추가 된 걸 볼 수 있다.

 

/info를 봤는데 없다.. 추가해주자. 

 

 

 

 

/actuator/beans

모든 스프링 빈 리스트

spring boot internal beans 뿐만 아니라 custom beans

 

/actuator/threaddump

어플리케이션에서 작동하는 모든 스레드 리스트

 

/actuator/mappings

request mapping 리스트

어떤 request mapping이 가능한 지 찾을 때 유용하다. 

 

 


Spring Security 

 

모든 정보를 보여주고 싶지 않을 때 security를 이용한다. 

 

1. pom.xml에서 security를 추가한다.

 

 

2. actuator endpoint 에 관한 security 인증

 

어플리케이션을 작동하면 로그인 페이지가 나온다.

아까 스프링 부트 프로젝트를 작동하면서 받은 패스워드를 넣는다. 

이제서야 홈페이지로 넘어간다. 

 

3. disable endpoint

 

application.properties 에 위와 같이 구성한다.

 

 

작동 안한다.

 


스프링부트 공식 문서 페이지

 

Spring Boot Reference Documentation

 

Spring Boot Reference Documentation

This section goes into more detail about how you should use Spring Boot. It covers topics such as build systems, auto-configuration, and how to run your applications. We also cover some Spring Boot best practices. Although there is nothing particularly spe

docs.spring.io