Spring
QueryDSL 설정
Querydsl 부트 3.x 설정 plugins { id 'java' id 'org.springframework.boot' version '3.2.0' id 'io.spring.dependency-management' version '1.1.4' } group = 'study' version = '0.0.1-SNAPSHOT' sourceCompatibility = '17' configurations { compileOnly { extendsFrom annotationProcessor } } repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' imp..
[스프링 부트 3 백엔드 개발자 되기: 자바 편] 책 수정 해야 할 곳(추가 중)
https://product.kyobobook.co.kr/detail/S000201766024 [스프링 부트 3 백엔드 개발자 되기: 자바 편 | 신선영 - 교보문고 스프링 부트 3 백엔드 개발자 되기: 자바 편 | product.kyobobook.co.kr](https://product.kyobobook.co.kr/detail/S000201766024) 해당 책에 관한 내용입니다. 우선 느낀점 : 스프링 부트의 첫시작에서 부터 기본적인 게시판 사이클 1회 정도 예제로 돌려보는 정도? 하지만 스프링 시큐리티 + CICD(GithubAction) + 배포(AWS)를 곁들인..이라 생각하면 좋을 것 같다. 책이 2023년에 나왔지만 부트 3.1x 버전 업이 되다보니 책이랑 다르게 변경점이 조금 있다. 그래서..
스프링 시큐리티 흐름 과정
보안(인증, 인가, 권한)을 담당하는 프레임 워크이다. 인증과 인가 인증 : 사용자의 신원을 확인(인증)하는 과정 인가 : 사이트의 특정 부분에 접근할 수 있는지 권한을 확인하는 작업 스프링 시큐리티 CSRF 공격, 세션 고정 공격을 방어, 요청 헤더 보안 처리 기능 제공 필터 기반 동작 주요 필터 : UsernamePasswordAuthenticationFilter : 인증 관리자, 폼 기반 로그인을 할 때 사용되는 필터로 아이디, 패스워드 데이터를 파싱해 인증 요청을 위임한다. FilterSecurityInterceptor : 접근 결정 관리자, 인가 관련 설정을 할 수 있음.\ 로그인 과정 HTTP 요청(아이디,패스워드 입력) 시 , HttpServletRequest에 아이디, 패스워드 정보가 전달..
[Spring validation] @Email은 not null일까?
@Email : 이메일 형식인지 체크한다. RequestDTO의 email에 @Email 어노테이션을 걸어두면 이메일 형식으로 입력안하면 Bad_REQUEST가 뜰 것이다. 왜 되는거지? 회원가입 API인데 Spring Validation을 적용하려면 RequestDTO에 제약조건을 걸어두고 Request 받을 매개변수에 @Valid를 걸어두어야 적용된다. 안 적어서 이메일로 test123이 적용된거 같다. @Valid 적용 원하는 대로 되었다. 그런데 @Email, @NotNull private String email;에서 @Notnull을 빼면 어떻게 될까 ? json에서 email을 뺐다. bad request가 안 뜨고 200 ok가 떠버렸다. 항상 requestdto를 만들 때 아이디 비밀번호에..
DB(테이블)과 JPA(객체)의 차이로 인해 생기는 것들(양방향 연관관계)
테이블은 TEAM의 PK가 곧 Member의 FK이므로 하나로 이루어 진 관계이다. 하지만 객체로 연관 관계를 설정 한다면 사실상 양방향이 아닌 단방향 관계가 두 개로 이루어 져있다. 여기서 오는 패러다임으로 멤버 중심으로 팀을 바꾸고 싶다든가, 팀 중심으로 멤버를 바꾸고 싶다든가 하는 상황이 생긴다. 여기서 이 문제를 해결하기 위해서 우리는 연관관계에서 주인을 정해야하고 규칙이 필요하다. 연관관계의 주인(Owner) 양방향 매핑 규칙 • 객체의 두 관계중 하나를 연관관계의 주인으로 지정 • 연관관계의 주인만이 외래 키를 관리(등록, 수정) • 주인이 아닌쪽은 읽기만 가능 • 주인은 mappedBy 속성 사용X • 주인이 아니면 mappedBy 속성으로 주인 지정 연관관계의 주인 설정 기준 외래 키가 있..
설정 파일(application.properties, application.yml) profile 변경 법
Profile 란? 스프링에서 애플리케이션 설정을 구분하여 관리하는 기능을 말한다. Profile을 쓰는 이유 환경 별로 설정을 분리 할 수 있다. 회사에서 실제 운영 서버가 있고 개발 서버가 따로 있고 내 컴퓨터(로컬)이 있다고 가정 한다면, 보통의 개발 흐름이라면 로컬 -> 개발서버 -> 운영서버로 만든 걸 반영 할 텐데 어떠한걸 삭제하는 api를 개발 중인데 테스트 해보려면 내 로컬에 있는 db 주소를 properties에 연결 해야한다. 그리고 개발서버에서 해보고 싶을때 또 properties 들어가서 db 이름을 바꿔주고 해야한다 귀찮다 그래서 properties를 따로 만들어 두고 어떠한 Properties 설정을 활용할 지 선택만 하면 되게 해주는게 profile이다. 하는 법 커맨드 라인 ..
책[스프링부트와 AWS로 혼자 구현하는 웹 서비스] SecurityConfig 작성시 WebSecurityConfigurerAdapter 문제
WebSecurityConfigurerAdapter 는 지금은 deprecated가 되었기 때문에 더 이상 지원 안한다. p.180 페이지의 시큐리티 설정 코드를 약간 변경해보았다. package com.tony.springboot.book.config.auth; // 이건 자기 패키지 상황에 맞게 바꾸세요 import com.tony.springboot.book.domain.user.Role; import lombok.RequiredArgsConstructor; import org.springframework.context.annotation.Bean; import org.springframework.security.config.annotation.web.builders.HttpSecurity; imp..