spring boot

기본적으로 Spring boot 내장 톰캣을 실행하면 8080포트로 서버가 올라갑니다. 서버 포트를 간단하게 바꾸는 다양한 방법에 대해서 알아보겠습니다. 1. application.properties 수정하기 server.port=9999 2. vm option 변경하기 -Dserver.port=9999 두 가지 방식 중에서 편한 방식으로 사용하면 간단하게 톰캣의 서버 포트를 수정할 수 있습니다. 추가적으로 공식 문서에 따르면 server.port=-1로 설정하는 방식을 언급합니다. WebApplicationContext의 생성을 허용하되 내장된 톰캣 서버의 HTTP endpoint를 비활성화하는 옵션입니다. 이렇게 되면 웹 서버를 시작하지 않고 application context가 초기화하는 시나리오를..
Spring Boot 애플리케이션에서 Self-Signed SSL 인증서를 사용해 HTTPS를 설정하는 방법에 대해 알아보겠습니다. Self-Signed SSL 인증서는 테스트 환경이나 개발 환경에서 테스트할때 쓰입니다. Self-Signed SSL 인증서 발급 받기 Self-Signed SSL 인증서는 PKCS12(Public Key Cryprographic Standards) 와 Java KeyStore 방식을 많이 사용합니다. 둘다 비슷합니다. 다만 Java KeyStore는 자바 언어에만 국한되서 사용할 수 있습니다. PKCS12로 발급 keytool -genkeypair -alias test -keyalg RSA -keysize 2048 -storetype PKCS12 -keystore test..
회사에서 Mybatis를 사용하고 있습니다. DataBase에서는 컬럼명을 snake case로 쓰고 자바에서는 camel case로 필드 이름을 정해주고 있어요. 객체에 값을 제대로 매핑해주기 위해서 쿼리 조회 시 일일이 Alias로 camel case를 적어주고 있었습니다. 그런데 알고보니 몇 가지 세팅만 해주면 이런 노가다는 필요없다는 사실 알고 계셨나요?? 충격을 먹어서 바로 찾아봤습니다. 문제 상황 우선, 왜 이러한 설정이 필요한지에 대해 이해해봅시다. 이미 서론에서 언급하긴 했는데 더 자세하게 알아볼게요. 보통 자바에서는 변수명을 camel case로 표현합니다. 예를 들어, userName, userEmail과 같이 말이죠. 반면에, 데이터베이스에서는 snake case를 흔히 사용합니다. ..
우리가 Spring을 사용하는 수 많은 이유중에 대표적인 장점을 꼽으라면 의존성 주입 컨테이너에 관한 내용을 빼놓을 수 없다. 스프링은 자바 빈을 찾아서 ApplicationContext라고 하는 의존성 주입 컨테이너 오브젝트에 등록을 한다. 그리고 애플리케이션이 돌다가 어떤 오브젝트가 필요하다면 의존하는 오브젝트를 찾아서 연결해준다. 그렇다면 스프링은 어떻게 자바 빈을 찾아가지고 의존성 주입 컨테이너에 등록하는걸까?? @Component 어노테이션으로 이 클래스를 자바 빈으로 등록하라고 알려줄 수 있다. 이번 포스팅에서는 이 @Component에 대해서 알아보려고 한다. @Component @Component 어노테이션을 붙이면 이 클래스를 자바 빈으로 등록시키라고 알려줄 수 있다. 해당 어노테이션이 ..
게시글이 한 줄로 1부터 100000개가 나열되면 불편하겠죠. 불편을 해결하기 위해 페이징 기능을 구현해봅시다. BoardController @GetMapping("/board/list") public String list(Model model, @PageableDefault(size = 5, sort = "id", direction = Sort.Direction.DESC) Pageable pageable) { List boardList = boardService.getBoardList(pageable); Integer[] pageList = boardService.getPageList(pageable); model.addAttribute("postList", boardList); model.addAtt..
글 검색 기능을 추가해보겠습니다. 제목,작성자,내용에 검색어가 포함된 글들만 리스트로 보여줄 예정입니다. BoardController @GetMapping("/board/search") public String search(@RequestParam(value="keyword") String keyword, Model model) { model.addAttribute("postList", boardService.searchPosts(keyword)); return "board/list.html"; } 여러분도 아시다시피 GET방식은 'localhost:8080?keyword=abcd' 로 값이 넘어오죠. REST API처럼 구현하고 싶은데 저는 실패를 했습니다.. 아무튼 저렇게 넘어온 값은 @Request..
오늘의 포스팅은 굉장히 짧을 예정입니다. 진짜 막상 마음을 먹으면 금방 뚝딱하고 만들 수 있는 파트거든요. BoardController @DeleteMapping("/board/post/{id}") public String delete(@PathVariable Long id) { boardService.delete(id); return "redirect:/board/list"; } controller에서는 service에게 넘겨주기만 합니다. BoardService @Transactional public void delete(Long id){ Board board = boardRepository.findById(id).orElseThrow(()->new IllegalArgumentException("해당..
https://kyuhyuk.kr/article/spring-boot/2020/07/21/Spring-Boot-JPA-MySQL-Board-Post-Update-Delete [Spring Boot] 게시판 구현 하기 (3) - 글 수정 및 삭제 앞의 글에서 글을 조회하는 기능을 만들었습니다. 이번 시간에는 글을 수정하고 삭제하는 기능을 구현해보겠습니다. kyuhyuk.kr 오늘도 이 분의 코드를 참고했습니다. Controller 추가 @GetMapping("/post/edit/{id}") public String edit(@PathVariable("id") Long id, Model model) { BoardDto boardDto = boardService.findById(id); model.addAtt..
게시글 작성에서 기존의 방식은 사용자가 글 제목, 작성자, 글 내용을 직접 입력해야했습니다. 그러나 로그인한 사용자의 이름을 게시글 작성자로 설정해두고 싶습니다. 이 처리를 위해서는 세션이 필요하다고 생각했고 관련 자료들을 찾게 되었습니다. HttpSession 활용하기 https://pro-pennek.tistory.com/entry/Spring-%EC%BB%A8%ED%8A%B8%EB%A1%A4%EB%9F%AC%EC%97%90%EC%84%9C-%EC%84%9C%EB%B9%84%EC%8A%A4%EB%A1%9C-Session%EA%B0%92-%EB%84%98%EA%B8%B0%EA%B8%B0 [Spring] 컨트롤러에서 서비스로 Session값 넘기기 어으 죽을 맛이다.ㅋㅋㅋㅋ 이것때문에 개고생함. 컨트롤러..
게시글 작성 기능에 이어서 글을 읽을 수 있는 기능을 넣어줍시다. 일단 게시글 목록 조회도 필요할 테고 그중에서 마음에 드는 글의 내용을 볼 수 있도록 해볼게요. BoardController @GetMapping("/board/list") public String list(Model model){ model.addAttribute("postList",boardService.findAllDesc()); return "board/list.html"; } @GetMapping("/board/post/{id}") public String findById (@PathVariable Long id,Model model){ BoardDto boardDto = boardService.findById(id); model..
moongomi
'spring boot' 태그의 글 목록