본문 바로가기

기술25

@Controller는 뭘까? @Controller 스프링 입문자로써 아마 무작정 무언가 실습을 해보면서 기능들을 익혀나가는 경험을 다들 했을 것이다. 나도 이 단계에 속하는데, Controller 클래스에 @Controller 어노테이션을 붙이면 마법처럼 URL을 입력하면 이쪽으로 인도되고 작업이 처리되는 마법같은 경험을 하면서 편함을 느끼고 감사하다는 마음도 들지만 동시에 대체 뒤에서 무슨 일이 일어나고 있는 것인지 깊은 의문이 생기곤 한다. 코드 뒤에서 작은 난쟁이들이 뚝딱뚝딱 만들어주는 것은 아닐 것이지 않은가. 아 물론 엄밀히 따지자면 스프링이 해주고 있긴 한데..... 본론으로 들어가서, @Controller가 무슨 역할을 하는지 설명하려면, 먼저 @Controller가 없으면 우리가 이 기능을 구현하기 위해 무엇을 해야 .. 2021. 11. 26.
Controller는 뭘 하는 녀석일까? 먼저 요약하자면, Controller - Service - Repository 구조에서 클라이언트의 요청(Request)에 대한 응답(Response)를 수행하는 역할을 전담하는 녀석이다. 즉 언제나 사용자와 맞닿아 있고, 사용자가 그 너머를 볼 수 없게 하는(인지하지 못 하게 하는) 역할을 한다고도 말 할 수 있다. 개발자 입장에서는 백엔드 개발 요청에 대해 Request와 Response를 어떤 방식으로 할 것인지를 일차적으로 정의해볼 수 있는 공간이 될 것이다. Controller 스마트폰으로 예를 들어보자면, 전원을 켜고 끄는 것, 앱 목록을 여는 것, 채팅 앱을 실행하는 것, 채팅창을 여는 것, 그 안에서 키보드를 사용해 글을 쓰는 것, 작성한 문자를 버튼을 눌러 전송하는 것 전부 사용자의 컨트.. 2021. 11. 26.
@RequestBody는 왜 Setter가 없어도 작동할까? POST 타입의 요청을 처리할 때, @RequestBody 어노테이션이 선언된 파라미터에는 Setter 선언을 해주지 않아도 된다. @PostMapping("/board/post") @ResponseBody public Board posting(@RequestBody BoardDto boardDto) { return boardService.posting(boardDto); } @Getter public class BoardDto { private String title; private String author; private String content; } // 멀쩡하게 잘 작동한다. @Request Body에서는 Setter가 필요없다? 회사에서 근무하던중 새로오신 신입 개발자분이 저에게 하나의 질문을.. 2021. 11. 24.
항해99 11/19(금) 스프링 TIL 11/16(화) 내용 중... 2. Bean 설정파일에 직접 등록 -> @Component 어노테이션을 사용하는 어노테이션인 @Configuration을 이용해 직접 등록해줄 수 있다. @Configuration public class SampleConfiguration { @Bean public SampleController sampleController() { return new SampleController; } } 1.은 클래스 단위, 2.는 메소드 단위에서 등록한다는데, 둘의 차이점은 직접 구분해서 써야하는 상황을 맞이해봐야 알 것 같다..... 이 부분, Bean 설정파일에 등록했을때의 이점을 알아왔다! 예를 들어, RDB를 무엇으로 설정할지 결정하지 못 한 상태라면, 일단 테스트는 해야하니 .. 2021. 11. 19.
항해99 11/18(목) 스프링 TIL @RestController와 @Controller RestController : request에 대한 response가 JSON으로 제공됨. Controller : response가 다른 페이지로의 안내일수도 있고, 일반 텍스트 형식일수도 있음. *Controller 내의 메소드에 @ResponseBody 선언을 해주면 RestController처럼 JSON으로 데이터를 보내줄 수 있다. 현재.. 파이썬으로 작성했던 1주차 프로젝트인 유튜브 랜덤 플레이리스트의 내용을 스프링으로 이식하는 작업을 수행중이다. 그렇게 됨에 따라 새로 배우는것보단 이미 익힌 것과 친해지는 작업중이다. 프론트엔드 담당자분이 항해99 과정을 중도하차 하셔서 프론트는 약식으로 꾸미거나 할 것 같지만, 내 담당인 백엔드만큼은 만들어.. 2021. 11. 18.
항해99 11/16(화) 스프링 TIL Jpa Repository 커스텀 Spring Data JPA - Reference Documentation Example 109. Using @Transactional at query methods @Transactional(readOnly = true) interface UserRepository extends JpaRepository { List findByLastname(String lastname); @Modifying @Transactional @Query("delete from User u where u.active = false") void del docs.spring.io JPA를 처음 접했을 때 느낀 의문점은 어떻게 이걸로 복잡한 쿼리를 작성할 수 있을까? 라는 것이었다. 위 문서는 이.. 2021. 11. 17.