본문 바로가기

스프링12

Springboot3 + Swagger, Whitelabel 해결 [버전 주의]스프링3을 쓰는 분들은  Springdoc  2.x.x를 써야한다. Swagger --   springfox(옛날 버전 / 업데이트 멈춤)               |               |--  springdoc(최신버전) //swager implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.0.2'이하 버전을 쓰거나 다른 dependenci를 받게된다면 Whitelabel Page가 뜰 것이다.  만약 버전을 맞게 했는데도 해결이 안되었다면 접속 URL를 확인해보세요!  [어노테이션 마이그레이션] [한글 깨짐 오류] 소스코드르 빌딩할 때 UTF-8로 안되어 있어서 그렇다 File -> Setting -> Fil.. 2024. 6. 24.
식별관계와 비식별관계 차이점 PK(기본키)테이블에서 각행을 구별하기 위한 키각행을 구별하기 위함이기 때문에 Null 이면 안되고 Unique해야 한다.노란키가 기본키이다. FK(외래키)타테이블을 참조하기 위한 키N:1 관계에서는 N이 FK를 갖는다.파란키가 외래키이다.각 테이블마다 관계를 설정할 때 외래키를 사용합니다. 외래키를 사용하여 join할 수 잇습니다.외래 키를 사용하여 테이블 간 관계를 정립해 줄 때 사용하는 전략은 크게 식별 관계, 비식별 관계 전략이 있습니다. 식별관계주문상품 테이블에서 파란키인 주문Key, 상품Key가 외래키이자 기본키가 된다.외래키가 기본키도 되었으니, null이 되면 안된다. null이 되면 안된다는 소리는 상품과 주문이 있어야 주문 상품을 생성할 수 있다는 것이다.즉, 주문상품의 데이터정합성을 .. 2024. 4. 25.
Intellij 설정 Intellij UI 바꾸기 Terminal git bash로 바꾸기 2024. 4. 16.
HTTP 메소드 PUT, FATCH 차이점(멱등성) POST 메소드로 정순원이라는 이름1을 가진 학생을 생성하기 위에 아래와 같이 요청하면, 고유 구분값인 id를 1로 설정되어 이름1 학생이 생성된다. HttpRequest POST /student { “name”: “이름1”, “grade”: 1 } HttpResponse HTTP/1.1 200 OK { “id”: 1, “name”: “이름1”, “grade”: 1 } 그러면 이제, PUT을 통해 이름1의 grade를 2를 변경해보자. PUT은 리소스에 대한 수정이므로 특정 리소스를 구분하는 id값을 넣어줘야 한다. HttpRequest PUT /student/1 { “grade”: 2 } HttpResponse HTTP/1.1 200 OK { “id”: 1, “name”: “뽀로로”, “grade”: .. 2024. 4. 11.
Id로 연관관계 짓기(엔티티로 연관관계x) @Data @Entity @NoArgsConstructor public class Member { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; public Member(Long id) { this.id = id; } public Member(String name) { this.name = name; } } @Data @Entity @NoArgsConstructor public class Team { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @ManyToOne @JoinColumn(name = ".. 2024. 4. 9.
@NoArgsConstructor(access = AccessLevel.PROTECTED) 쓰는 이유 @Getter @Entity @NoArgsConstructor(access = AccessLevel.PROTECTED) public class PostComment extends BaseTimeEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) public Long id; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "post_id") private Post post; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "parent_comment_id") private PostComment parentComment; @ManyToOne(fetc.. 2024. 4. 6.
Intellij에서 gradle 버전이 안 보일 때 해결법 새로 생성한 것이 아니라 기존 프로젝트를 받아오는 경우 가끔 gradle을 인식하지 못하는 경우가 있습니다. 그럴 때는 Link Gradle Project를 눌러주면 해결됩니다. 우측 상단바에 Gradle이 나타났습니다. 2024. 4. 6.
mysql, gradle 종속성 관리 변경된 점 MySQL 8.0.31 버전부터 groupId와 artifactId가 변경되었다고 합니다. MySQL 8.0.31 이전 버전 mysql mysql-connector-java MySQL 8.0.31 이후 버전 com.mysql mysql-connector-j dependencies { runtimeOnly 'com.mysql:mysql-connector-j' } 2024. 1. 31.
[인가 설정 리팩토링] Security Config -> @PreAuthorize 문제점: Path가 추가 될 때마다 시프링 시큐리티에 추가해주어야 한다. 즉, 코드가 길어질 가능성이 있어 가독성이 떨어진다. 또한 컨트롤러에서 어느권한이 접근하는 메소드인지 알 수 없다. 방안: @PreAuthorize 어노테이션 도입 위에서 말한 문제점들을 모두 해결해줄 수 있다! 리팩토링 config에 @EnableGlobaslMethodSecurity 어노에티션을 안 달아줬다. 적용이 되는 줄 착각했던 것이다 @EnableGlobaslMethodSecurity 를 달아주고 스프링 공식문서를 보니 마이그레이션 됐다 @EnableMethodSecurity로 변경한다 트러블 슈팅 test해보니 cusotmeAccessDeniedhandler가 호출이 되어야 하는데 호출이 되고 있지 않는 것을 보고 있다.. 2024. 1. 25.