본문 바로가기
Back-End/Spring

TIL 230613 : Spring 첫 인상. (@annotation)

by 우인입니다 2023. 6. 14.

TIL은 뭔가 표면적인 내용 그 이상의 깨달음들을 기록하고 싶습니다. 아쉽게도 아직은 기본적인 문법과 기능들을 익히는 데에도 헷갈리고 숙지하기 바쁩니다. 어설프게 MVC패턴을 정리할 수는 있겠지만 머릿속 깊이 이해했다고 보기는 어렵기에 그 정도 수준의 학습을 기록하기엔 마음이 가지 않기에, 우선 기초를 빨리 숙지하고 거기서 나오는 응용력을 빨리 끌어올리고 싶은 마음에 기초적인 내용들을 숙지하기 위한 TIL로 정리하려하고, 그에 대한 변명을 해봤습니다.😂


Spring의 첫인상.
  • @Annotation의 형태로 편리한 기능을 제공하는 느낌들을 많이 받았다.
  • gradle이라는 기능이 있고 이를 통해 build하는 작업환경(?)을 세팅해주는 느낌이다. 작업환경의 중요성을 얼핏들은 것 같은데 우선 이에 대한 공부는 유보중이다.
  • 이전 파이썬의 flask처럼 localhost를 통한 내 사이트를 접근할 수 있게 해주는 기능을 기본적으로 제공해준다. 아마 IDE에서 실행된 SpringApplication을 서버에 업로드해서 누구나 접속할 수 있게 해주는 것이 이후 배포과정으로 예정되어있지 않을까 싶다.

 

정적페이지  /  동적페이지

이미 정해진 페이지들은 html로 저장해두었다가 보여주기만 하면 된다. 이런 페이지를 정적페이지라고 하고,

실시간으로 댓글이나 게시물 등을 로딩받아서 보여주는 페이지를 동적페이지라고 한다.

아래에는 정적페이지를 호출하는 방법 몇 가지가 있다.

 

기본적으로 세팅된 폴더 중 static에 정적페이지 html파일을 저장해 호출할 수 있다.

 

Static 폴더에 있는 html 호출하는 법

1. 직접 html파일 이름을 URL주소에 입력.

2. 해당 주소 리턴값에 redirect로 해당 파일 입력.

 

Templates 폴더에 있는 html 호출하는 법

리턴값으로 해당 html문서의 제목을 문자열로 준다.

이건 동적, 정적 둘 다 해당되는 듯 하다..?

     

 

자주쓰이는 @Annotation

@Controller

해당 클래스가 컨트롤러임을 지정.

 

@Responsebody

위에서 문자열 리턴받은걸로 해당 html이름 찾아서 실행하는데,

해당 어노테이션을 사용해주면 html의 <body>에 리턴해준다.

  서버한테 향하는 동작은 Request, 클라이언트한테 향하는 동작은 Response인 느낌..?

  Response를 Body에 해준다.

 

@Restcontroller

 해당 클래스 내의 메소드에는 @ResponseBody가 적용히 된다.

 

@PathVariable 
  URL주소에서 매개변수를 받음.

   주소를 매개변수로 포함해서 해주는 기능은 코드스니펫의 html 상에 구현되어 있었다.

   @PathVariable은 주소에서 매개변수를 가져오기만 하고 요청하는 건 아닌걸로 보인다.

 

@RequestParam (생략가능 SimpleValueType 의 경우에 RequestParam으로 간주.)
  쿼리스트링 형태 추가한 URL로도 데이터 넘겨줌.
  form타입으로도 전달 가능.
  POST 메소드는 Payload로 body에 데이터를 보내줌.

 

@ModelAttribute (생략가능)

 전달받은 데이터로 객체 생성함. Payload에 있는 데이터기반으로 객체를 생성하는 듯. (Formdata를 받음)

 

@Requestbody

JSON형식과 같은 데이터를 body에서 받아올 때는 해당 어노테이션을 달아야한다.

PathVarible이나 

 

GET, POST 메소드시 Request content-type(?)

GET 메소드는 Form태그로 받은 게 스크립트를 통해  QueryStringParameter로 URL형태에 올려짐.

 

 

POST 메소드는 Form 태그로 받은 게 Payload에 FormData로 나옴.

form태그 안에 있는 button은 디폴트로 submit기능을 한다고 함.

 

 

 

 

Jackson

Jackson은 스프링 라이브러리로 object와 json의 형태를 변환할 수 있다.

이거 쓰면 json <-> object

 

참고로, 스프링은 자바의 객체를 자동으로 json형태로 변환한다.

 

 

Required

required = false 로 하면 메소드 오버로딩 없이 그냥 값 없이 생성한다.

 

 

+추가궁금증..

Payload가 form태그 버튼으로 submit하면 자동으로 실리는 그런 곳..?