목록SpringBootProject (21)
개발자의 서재
목적 springBoot와 RabbitMQ 연동 RabbitMQ를 통해 문자열과 객체 sender, receive 만들어보기 개발순서 Local에 docker를 통해서 RabbitMQ 설치 문자열 sender, receiver 개발, 테스트 객체 sender, receiver 개발, 테스트 메시지 흐름 Sender 에서 Receiver로 메세지 전송 Receiver 에서 메세지 수신 Receiver 에서 메시지 수신 후 Sender로 메세지 리턴 Sender 에서 리턴받은 메세지 수신 소스(센더) : https://github.com/ironmask431/springboot-rabbitMq-sender 소스(리시버): https://github.com/ironmask431/springboot-rabbit..
https://www.hanumoka.net/2019/01/21/springBoot-20190121-springboot-deploy-docker/ springboot - docker 이미지로 만들어 실행하기 들어가기SpringBoot로 생성한 스프링 프로젝트를 docker 이미지로 만들어서 동작시키는 예제를 만들어보겠다. 준비물윈도우에 docker for windows를 설치 윈도우에 maven 설치 springboot 웹 프로젝트 준비 Spr www.hanumoka.net 위 링크 참고 1. gradle > build 를 실행해서 jar 파일을 생성한다. build 가 완료되면 /build/libs/ 경로에 jar 파일이 생성된다. 2. 커맨드에서 아래 명령어를 실행한 후 localhost:8080 에..
각 Controller 의 mapping Url 별 테스트코드를 작성해보았다. @SpringBootTest 를 사용하였고, @Before 에서는 data.sql을 통해 insert 되는 기본 데이터를 삭제하고 테스트용 user 정보입력 + Security Context 에 user 정보를 등록하고, jwt 토큰 발급 + 헤더에 토큰등록을 하여 토큰인증이 필요한 api가 정상 실행되도록 하였다. @After 에서는 테스트 후 입력된 데이터를 모두 삭제하도록 하였다. JoinControllerTest.java package com.leesh.springbootjwttutorial.restApiTest; import com.fasterxml.jackson.databind.ObjectMapper; import ..
REST API 를 SWAGGER 를 이용해 문서화 해보기 1. 스웨거 라이브러리 추가 maven repository 에서 swagger 로 검색해보았다. 검색 결과가 여러개 나와서 이것처것 찾아보다가 아래 2개가 적합한 것으로 확인되었다. springfox swagger ui => swagger 를 브라우저ui로 볼수있는 기능 springfox swagger2 => swagger 기능 2. build.gradle 에 의존성추가 implementation 'io.springfox:springfox-swagger-ui:2.9.2' implementation 'io.springfox:springfox-swagger2:2.9.2' 3. config 패키지에 SwaggerConfig.java 생성 package..
- 상품,주문 entity, dto, servcie, controller 추가 Entity 관계도(ERD) 1. entity 생성 Product.java package com.leesh.springbootjwttutorial.entity; import lombok.*; import javax.persistence.*; /** * 상품 entity */ @Entity @Table(name="product") @Getter @Setter @Builder @AllArgsConstructor @NoArgsConstructor public class Product { @Id @Column(name="prd_id") @GeneratedValue(strategy = GenerationType.IDENTITY) // ..
- 회원가입 api 생성 - 권한검증 확인 1. util 패키지 생성 > SecurityUtil.java 클래스 생성 package com.leesh.springbootjwttutorial.util; import lombok.extern.slf4j.Slf4j; import org.springframework.security.core.Authentication; import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.security.core.userdetails.UserDetails; import org.springframework.stereotype.Component; import j..
- DTO 생성 - Repository 관련 코드 생성 - 로그인API, 관련 로직 생성 1. DTO 패키지 생성 2. LoginDto.java 생성 package com.leesh.springbootjwttutorial.dto; import lombok.*; import javax.validation.constraints.NotNull; import javax.validation.constraints.Size; @Getter @Setter @Builder @AllArgsConstructor @NoArgsConstructor public class LoginDto { //@NotNull = requestBody로 입력받을때 not null 체크 @NotNull @Size(min=3, max=50) pri..
- JWT 설정 추가 - JWT 관련 코드 추가 - Security 설정 추가 1. application.yaml 에 jwt관련 설정 추가 여기서는 HS512 알고리즘을 사용해 암호화를 할 것이기 때문에 Secret Key는 64 byte 이상이어야 한다. Secret Key는 특정 문자열을 Base64 로 인코딩한 값으로 설정한다. jwt: header: Authorization #secret : 별도 문자열을 base64로 암호화한값 secret: c3ByaW5nYm9vdC1qd3QtdHV0b3JpYWwtc3ByaW5nYm9vdC1qd3QtdHV0b3JpYWwtc3ByaW5nYm9vdC1qd3QtdHV0b3JpYWwK #토큰만료시간(ms) token-validity-in-seconds: 3600 ba..
- datasource, JPA 설정 - entity 생성, - h2 console 결과확인 1. application.properties > yaml 파일로수정 > 내용입력 spring: h2: console: enabled: true datasources: url: jdbc:h2:mem:testdb driver-class-name: org.h2.Driver username: sa password: jpa: database-platform: org.hibernate.dialect.H2Dialect hibernate: ddl-auto: create-drop properties: hibernate: #콘솔창에서 sql 보기위한 설정 format_sql: true show_sql: true logging: ..
서버와 클라이언트가 같은 세션 ID 를 공유하는 방식의 기존의 세션 로그인 방식은 서버가 각 클라이언트들의 세션ID를 서버의 별도 공간에 저장해야 한다는 점 때문에 여러가지 제한 사항들이 있다. (서버의 저장공간 필요, 서버가 여러 대 일 경우 세션 클러스터링 필요. 각 서비스별로 별도 로그인 필요등) JWT 로그인 방식은 서버에서 클라이언트에게 토큰을 발급 한 후 별도로 저장 해 놓을 필요가 없기 때문에 세션 로그인 방식에 비해 여러가지 장점을 가지고 있다. (물론 단점도 있다.) 이번 실습으로 JWT 토큰 인증 방식을 REST API 적용하는 방법을 익히고자 한다. 목적 : SpringSecurity + JWT 토큰인증 구축해보기 JWT 토큰인증방식을 REST API 에 적용해보기 JPA 활용 공부 ..