Spring/SpringBoot

[spring boot / 스프링 부트와 AWS로 혼자 구현하는 웹서비스] 05. Spring Boot Reference 와 Spring의 특징 상기하기, Spring boot Annotation

SIXXXX_ 2022. 7. 31. 14:00
728x90

Spring Boot Reference 공식문서

Spring Boot Reference Documentation

 

사실 공식 문서를 잘 사용해야 한다고 들었다. 필수로 권장.

영어공부도 할겸 계속 켜놓고 보는 것도 좋은 방법 같다.

 

 

 

인코딩설정

[IntelliJ] IntelliJ 인코딩 설정(IntelliJ UTF-8 설정, IntelliJ 한글 설정)

 

 

Application(@SpringBootApplication)

  • 메인
  • 어노테이션으로 인해 SpringBoot 의 자동설정, Spring Bean 읽기와 생성을 모두 자동 설정
  • @SpringBootApplication이 있는 위치부터 설정을 읽어가기 때문 → 클래스가 항상프로젝트 최상단에 위치해야 한다.

main() : SpringApplication.run

 

내장 WAS를 실행 → spring boot 로 만들어진 Jar 파일로 실행하면 된다.

언제 어디서나 같은 환경에서 스프링 부트를 배포할 수 있기 때문

대표적인 WAS: 톰캣(서블릿으로 이뤄진 자바 애플리케이션)

 

 

 

HelloController

@RestController

  • 컨트롤러를 JSON을 반환하는 컨트롤러로 만들어준다.
  • 예전에는 ResponseBody를 각 메소드마다 선언했던 것을 한번에 사용할 수 있게 해준다.

@GetMapping

  • HTTP Method인 Get의 요청을 받을 수 있는 API를 만들어준다.
  • 예전에는 @RequestMapping(method = RequestMethod.GET)으로 사용되었는데,
    이 프로젝트는 /hello로 요청이 오면 문자열 hello를 반환하는 기능을 가지게 된다.

 

Annotation정리

Spring Boot Annotation 정리

[Spring] Annotation 정리

나의 경우 JPA를 아직 다 공부해보지 못해서 이쪽 어노테이션은 잘 모른다.

 

 

어노테이션이란,

1) 컴파일러에게 코드 작성 문법 에러를 체크하도록 정보를 제공한다.

2) 소프트웨어 개발 툴이 빌드나 배치시 코드를 자동으로 생성할 수 있도록 정보를 제공한다.

3) 실행시(런타임시) 특정 기능을 실행하도록 정보를 제공한다.

 

어노테이션 순서

  1. 어노테이션을 정의한다.
  2. 클래스에 어노테이션을 배치한다.
  3. 코드가 실행되는 중 Reflection을 이용하여 추가 정보를 획득하여 기능을 실시한다.

Reflection이란, 프로그램이 실행 중 자신의 구조와 동작을 검사, 조사, 수정하는 것이다.

프로그래머가 데이터를 보여주고 다른 포맷의 데이터를 처리하고 통신을 위해 serialization(직렬화)를 수행하고

bundling을 하기 위해 일반 소프트웨어 라이브러리를 만들도록 도와준다.

 

Java와 같은 객체 지향 프로그래밍 언어에서 

Reflection을 사용하면 컴파일 타임에 인터페이스, 필드, 메소드의 이름을 알지 못해도

실행 중에 클래스, 인터페이스, 필드 및 메소드에 접근할 수 있다.

또한 새로운 객체의 인스턴스화 및 메소드 호출을 허용한다.

 

 

annotation 모르던거 점검

@WebFilter

filter를 등록, 설정하는 어노테이션. 태그를 통해 사용하던 설정 모두를 지원한다.

 

@PostMapping

등록할때 사용, Http body에 담아 보낸다.

 

@GetMapping

@RequestMapping(Method=RequestMethod.GET)과 같다. Http head에 담아 보내기 때문에 용량제한이 있다.

 

@PutMapping

수정할때 사용한다.

 

@MapperScan

mapper.xml 파일들이 바라볼 기본 패키지 위치를 지정해주는 어노테이션으로 mapper 인터페이스를 자동으로 스캐닝하고 등록한다.

 

@EnableTransactionManagement

Java Config를 위한 어노테이션 중 하나로 어노테이션 기반 트랜잭션을 활성화한다.

 

@RequestPart

Request 로 온 MultipartFile을 바인딩해준다.

 

annotation 다시 상기 점검

@Override

상위 클래스에서 오버 라이드한 메소드라는 것을 설명해주는 어노테이션으로 

정의하지 않은 메소드를 쓰는 경우 컴파일 에러나기에 예방 차원으로 쓴다고 한다.

 

 

@Log4j2

로깅 프레임 워크를 제공

해당 어노테이션을 클래스에 선언하게 되면 다음과 같은 변수가 내부적으로 생성되며

실제 선언되어 있지 않아도 log변수의 메소드에 접근할 수 있다. 

 

 

@RequestMapping 

요청 url 을 어떤 메서드가 처리할 것인지 매핑해주는 어노테이션으로 라우팅 정보를 제공하고 선언한 경로의 값에 따라 HTTP 요청이 해당 메서드에 매핑되어야 하는 것을 스프링에 알린다.

 

 

@bean

개발자가 직접 제어 불가능한 외부 라이브러리 등을 만들때 사용한다. 객체를 의미하고 Spring container에 bea을 등록하도록 하는 어노테이션이다.

 

@component

개발자가 직접 작성한 class를 bean으로 등록하기 위해 사용한다.

 

@ConfigurationProperties

yaml파일을 읽는다. Default로 스프링 부트 설정 파일인 classpath:application.properties파일이 조회된다.

속성 클래스를 따로 만들어두고 그 위에 prefix="xx"써서 접두사를 사용할 수도 있다.(?아직 잘 모르겠다)

 

@RestController

@Controller + @ResponseBody를 합친 어노테이션으로 메소드의 반환 결과를 JSON 형태로 반환하낟

@RestController : view 가 필요없는 api 만 지원하는 서비스에서 사용한다(spring 4.0.1부터 제공)

@Controller : api 와 view를 동시에 사용하는 경우에 사용한다. view return이 주 목적이다.

 

 

Test 코드 검증

src/test/java 디렉토리에 있다.

test를 통해 tdd를 진행한다.