Spring

    Microservice와 Spring Cloud 소개

    Microservice와 Spring Cloud 소개

    2010년 이후부터 Resilient/Anti-Fragile, Cloud Native 로 시스템 구축 -> 확장성, 안정성 강화 Anti-Fragile의 핵심 Auto scaling (자동 확장성) Microservices Chaos enineering (변동, 예견된 불확실성, 예견되지 않은 불확실성에 대해서도 안정적인 서비스 제공) Continuous deployments (CI/CD 지속적인 통합/배포) Cloud Native Architecture 확장 가능한 아키텍처 시스템의 수평적 확장에 유연 -> 더 많은 사용자 확장된 서버로 시스템의 부하 분산, 가용성 보장 [스켈업(하드웨어 업그레이드), 스켈 아웃(동일한 하드웨어 갯수 증가] 시스템 또는 서비스 애플리케이션 단위의 패키지 (컨테이너 기반..

    회원가입, 권한검증

    회원가입, 권한검증

    회원가입 API 생성 권한검증 확인 간단한 유틸리티 메소드를 만들기 위해 SecurityUtil 클래스 생성 package com.example.jwttutorial.util; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.security.core.Authentication; import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.security.core.userdetails.UserDetails; import java.util.Optional; public class Securit..

    DTO, Repository, 로그인

    DTO, Repository, 로그인

    외부와의 통신에 사용할 DTO 클래스 생성 Repository 관련 코드 생성 로그인 API, 관련 로직 생성 로그인 시 사용할 LoginDto 클래스 생성 package com.example.jwttutorial.dto; import lombok.*; import javax.validation.constraints.NotNull; import javax.validation.constraints.Size; @Getter @Setter @Builder @AllArgsConstructor @NoArgsConstructor public class LoginDto { @NotNull @Size(min = 3, max = 50) private String username; @NotNull @Size(min = 3..

    JWT 코드, Security 설정 추가

    JWT 설정 추가 spring: h2: console: enabled: true datasource: url: jdbc:h2:tcp://localhost/~/documents/project/jwt driver-class-name: org.h2.Driver username: sa password: jpa: database-platform: org.hibernate.dialect.H2Dialect hibernate: ddl-auto: update properties: hibernate: format_sql: true show_sql: true logging: level: com.example: DEBUG jwt: header: Authorization secret: QAFF-_jk3R4iSedvs_JM4Z9..

    Security 설정, Data 설정

    401 unauthorized 해결을 위한 Security 설정 package com.example.jwttutorial.config; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; @EnableWebSecurity // 기본적인 Web 보안을 활성화 public cl..

    JWT 소개

    JWT 소개

    JWT(JSON Web Token)는 RFC 7519 웹 표준으로 지정이 되어있고 JSON 객체를 사용해서 토큰 자체에 정보들을 저장하고 있는 Web Token이라고 정의 할 수 있습니다. Header, Payload, Signature로 구성되어있다. aaaaaa.bbbbbbb.ccccccc -> (header.payload.signature) Header : Signature를 해싱하기 위한 알고리즘 정보들이 담겨 있다. Payload : 서버와 클라이언트가 주고받는, 시스템에서 실제로 사용될 정보에 대한 내용들을 담고 있습니다. Signature : 토큰의 유효성 검증을 위한 문자열입니다. 이 문자열을 통해 서버에서는 이 토큰이 유효한 토큰인지를 검증할 수 있습니다. 장점 중앙의 인증 서버, 데이터..

    스프링 데이터 JPA가 제공하는 Querydsl 기능

    목차 인터페이스 지원 - QuerydslPredicateExecutor Querydsl Web 지원 리포지토리 지원 - QuerydslRepositorySupport Querydsl 지원 클래스 직접 만들기 여기서 소개하는 기능은 제약이 커서 복잡한 실무 환경에서 사용하기에는 많이 부족하다. 그래도 스프링 데이터에서 제공하는 기능이므로 간단히 소개하고, 왜 부족한지 설명하겠다. 인터페이스 지원 - QuerydslPredicateExecutor 공식 URL: https://docs.spring.io/spring-data/jpa/docs/2.2.3.RELEASE/reference/html/#core.extensions.querydsl QuerydslPredicateExecutor 인터페이스 public in..

    실무 활용 - 스프링 데이터 JPA와 Querydsl

    실무 활용 - 스프링 데이터 JPA와 Querydsl

    목차 스프링 데이터 JPA 리포지토리로 변경 사용자 정의 리포지토리 스프링 데이터 페이징 활용1 - Querydsl 페이징 연동 스프링 데이터 페이징 활용2 - CountQuery 최적화 스프링 데이터 페이징 활용3 - 컨트롤러 개발 스프링 데이터 JPA 리포지토리로 변경 스프링 데이터 JPA - MemberRepository 생성 package study.querydsl.repository; import org.springframework.data.jpa.repository.JpaRepository; import study.querydsl.entity.Member; import java.util.List; public interface MemberRepository extends JpaRepositor..

    순수 JPA와 Querydsl

    목차 순수 JPA 리포지토리와 Querydsl 동적 쿼리와 성능 최적화 조회 - Builder 사용 동적 쿼리와 성능 최적화 조회 - Where절 파라미터 사용 조회 API 컨트롤러 개발 순수 JPA 리포지토리와 Querydsl 순수 JPA 리포지토리 package study.querydsl.repository; import com.querydsl.jpa.impl.JPAQueryFactory; import org.springframework.stereotype.Repository; import study.querydsl.entity.Member; import javax.persistence.EntityManager; import java.util.List; import java.util.Optional;..

    중급 문법

    목차 프로젝션과 결과 반환 - 기본 프로젝션과 결과 반환 - DTO 조회 프로젝션과 결과 반환 - @QueryProjection 동적 쿼리 - BooleanBuilder 사용 동적 쿼리 - Where 다중 파라미터 사용 수정, 삭제 벌크 연산 SQL function 호출하기 프로젝션과 결과 반환 - 기본 프로젝션: select 대상 지정 프로젝션 대상이 하나 @Test public void simpleProjection(){ List fetch = queryFactory .select(member.username) .from(member) .fetch(); } 프로젝션 대상이 하나면 타입을 명확하게 지정할 수 있음 프로젝션 대상이 둘 이상이면 튜플이나 DTO로 조회 튜플 조회 프로젝션 대상이 둘 이상일 ..