Spring 98

[Spring] API 문서 자동화 2 - Sping REST Docs

✨ api 문서화 정리 글 Swagger Spring Rest Docs RestDocs + Swagger-UI 같이사용하기 아래의 버전인 상황에서 적용을해본 예제입니다 참고해주세요 :) spring boot 3.0 jdk 17 gradle 7.5.1 1. Spring REST Docs란 Spring 에서 API 문서를 자동화하는 또 다른 방법은 Spring Rest Docs 입니다. 2. Swagger VS Spring Rest Docs 자바 문서 자동화에는 주로 Swagger 와 Spring Rest Docs 가 사용됩니다. Spring Rest Docs Swagger 장점 제품코드에 영향이 없다 API를 테스트 해 볼수 있는 화면을 제공한다. 테스트가 성공해야 문서가 작성된다. 적용하기 쉽다. 단점 ..

Spring/Spring Boot 2021.12.31

[Spring] API 문서 자동화 1 - Swagger

✨ api 문서화 정리 글 Swagger Spring Rest Docs RestDocs + Swagger-UI 같이사용하기 이번에는 API 문서 자동화를 해보려 한다. API 문서 자동화 방법은 지금까지 내가 알기로는 1. 스웨거 (Swagger) 2. Spring RestDoc 2가지 방법이 존재하고, 2번은, Spring에서만 되는거 같기 때문에, Swagger를 사용해보고, Spring RestDoc을 마지막으로 적용해볼 예정이다. 1. 스웨거란 (Swagger) 스웨거는 개발자가 REST 웹 서비스를 설계, 빌드, 문서화, 소비하는 일을 도와주는 대형 도구 생태계의 지원을 받는 오픈 소스 소프트웨어 프레임워크이다. - 위키 Swagger란, 간단한 설정으로 프로젝트에서 지정한 URL들을 HTML화..

Spring/Spring Boot 2021.12.29

JPA pageable 페이징 정렬, 외부 참조 엔티티 리스트 개수로 정렬할때 - @Formula

문제 Spring Data JPA를 이용해서 페이지네이션-정렬을 구현하는데, 외부 참조 엔티티의 참조하는 엔티티의 수?를 이용해서 정렬을 하고싶다. (좋아요 수) 이게 방법을 몰라, 일단, 외부 엔티티를 참조하는 멤버변수의 이름으로 정렬을 해보니, 정렬이 되긴 되었다. 하지만, 첫번째 데이터가 한번 더 중복되서 나오는 문제가 발생 심지어 순서대로 중복되는 것도 아님 왜 중복이되서 나오지조차 감이 안잡힘 DomainEntity.class @Table(name = "post") public class Post extends Timestamped { @Id @GeneratedValue(strategy = GenerationType.AUTO) @Column(name = "id") private Long idx;..

Spring/Spring Boot 2021.12.29

[Spring] JPA의 이해(JPA, Hibernate)

순서 1. JPA란 2. ORM이란 3. JPA 구조 - 하이버네이트 4. JPA 와 Spring data JPA 의 차이 5. Spring Data JPA 키워드 1. JPA란 JPA 는 Java Persistence(영속성) API 입니다. 여기서 Persistence란, 사전적 의미로 "영속성"을 의미하며, 데이터가 (없어지지 않고 오랜동안) 지속됨을 의미합니다. 램은 휘발성 데이터를 저장 - 컴퓨터가 꺼지면 사라짐 데이터가 날라가지 않도록 -> 하드디스크에 저장하면 안 사라짐 => 이게 퍼시스턴스(영구히 기록) 다시 JPA란, Java Persitance API 는 "자바에서 데이터를 영구히 기록할 수 있는(DBMS에) 환경을 제공하는 API" 라고 말할 수 있다. 여기서 API는, 애플리케이션(..

Spring/Spring Boot 2021.12.29

[Spring] 스프링 부트 페이지네이션 (Query, JPA, offset / cursor 페이지네이션)

페이지네이션을 구현해보자!! spring boot 의 JPA를 이용해서 구현을 할 예정이다 페이지네이션을 구하기 위해서는 요롷게 3가지를 생각해 주어야한다. view size : 한페이지에 보여줄 개수 total page : 전체 페이지 개수 page : 현재 페이지 1. 첫번째 아이디어 단순, findAll()로 List로 불러와 list.sublist 로 잘라주었다. //게시글 목록 @GetMapping("/post-list") public List getPostList(@RequestParam("page") int page){ List resultList = postService.getPostList(); List postList = Arrays.asList(modelMapper.map(result..

Spring/Spring Boot 2021.12.23

[Spring] 스프링 시큐리티 - 카카오 소셜로그인 하기(OAuth)

https://developers.kakao.com/console/app 카카오계정 로그인 여기를 눌러 링크를 확인하세요. accounts.kakao.com 카카오 로그인 설정하기 카카오 로그인을 하기 전에 개발자 사이트에서 '어플리케이션 등록'을 해야 합니다. 1. 회원가입 후 어플리케이션 추가 2. 앱 이름, 사업자명 저장 3. 사이트 도메인 등록 애플리케이션 선택 플랫폼 메뉴 선택 Web 플랫폼 등록 사이트 도메인 입력 4. Redirect URI (callback) 설정 카카오 로그인을 하기위해서 인가토큰을 받게 될 Redirect URI(callback)을 설정해야한다. 5. 동의 항목 설정하기 프로필 정보와 이메일 정보를 체크합니다. 나머지는 사용할 수 가 없습니다.. 카카오 로그인 구현하기 ..

Spring/Spring Boot 2021.12.04

[Spring] 스프링 시큐리티 사용하기 - spring security (로그인, 로그아웃, 회원가입)

레거시(?) 블로그 글 입니다. JWT 토큰과 Sping Boot 3.0 + Spring Security6 를 이용한 Rest API 방식의 인증-인가 방식을 이용한 더 자세한 내용을 원하시는 분은 아래 글을 참고해주세요 ! 🤗 https://thalals.tistory.com/436 스프링 시큐리티 프레임워크 스피링 시큐리티(Spring Security) - '스프링 시큐리티' 프레임워크는 스프링 서버에서 필요한 인증 및 인가를 위해 스프링에서 제공해주는 프레임워크입니다. 스프링 시큐리티 프레임워크 추가(빌드 추가) build.gradle // 스프링 시큐리티 implementation 'org.springframework.boot:spring-boot-starter-security' // Thymel..

Spring/Spring Boot 2021.12.04

[Spring] 웹의 인증,인가 / 쿠키와 세션

웹의 인증 및 인가 인증(Authentication) : 사용자 신원을 확인하는 행위 (로그인, 아이디 패스워드) 인가(Authorization) : 사용자 권한을 확인하는 행위 (역할에 따른 접근권한, ex) 카페 등급) 인증: 회사 출입을 위한 출입증 확인 혹은 생체정보 (지문, 홍채) 인식 인가: 회사 건물 내 접근 권한 관리 방문자 → 회의실만 접근 가능 직원 → 회의실, 사무실 접근 가능 관리자 → 회의실, 사무실, 서버실, 물품보관실 접근 가능 쿠키와 세션 쿠키나 세션이 필요한 이유 HTTP는 상태를 저장하지않습니다, ('Stateless' 하다) 이게 무슨 말이나면, 아래의 그림에서 클라이언트의 요청(Request)을 서버에 보낸 후 응답(Response)를 받을 때까지가 하나의 HTTP 요..

Spring/Spring Boot 2021.12.03

Spring Putmapping Json 과 File 데이터 함께 전송하기(Form data)

Restful 한 방법을 지키기 위해, 게시글 수정 하던 중, Put Method로 formdata에 file 데이터를 날려 보내는데, PUT에서 Formdata를 받지 못한다.. 여러 시행 착오중, @requestpart 로 받으면, put에서도 formdata를 받을 수 있는것을 확인했다. 하지만, dto로 매핑은 되지않고 하나씩만 받아와짐..ㅠ 그래서 Form data에 file 데이터와 Json 데이터를 key라는 이름으로 보내서 dto에 매핑 Ajax function update_post() { if (confirm("수정 하시겠습니까?") == false) { $('#modalClose').click(); } else { let content = $('#update-content').val()..

Spring/Spring Boot 2021.12.03

[Spring] JPA FindAll<Entity> to convert DTO (ModelMapper)

Spring에서는 DTO를 이용해서 사용자에게 Request를 받고, Response를 보냄으로써, 데이터를 보호한다. Request를 DTO로 받는방법은 정말 많고, 자료도 많지만 Response를 DTO로 변환하는 방법은 잘 나오지 않아 정리해 보고자 한다. 1) 가장 쉬운 방법 가장 쉬운 방법은 역시 노가다다. Response로 보내기 위한 엔티티 정보를 불러오와서, Setter로 하나씩 DTO 클래스에 입력해주면된다. 하지만 이건 쿨하지 못하다. 2) ModelMapper 이 글의 주된 목표이다. ModelMapper를 사용하면, 비교적 쿨하게, 한방에, 센스있는 converting이 가능하다. ModelMapper란 ModelMapper의 목표는 특정 사용 사례를 처리하기 위한 간단하고 리팩토링..

Spring/Spring Boot 2021.12.03