일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
- 스프링 배치
- Spring Security
- spring boot
- CI/CD
- Container
- virtualization
- vm
- 가상화
- 스프링 시큐리티
- 데이터베이스
- computer science
- 자바
- Java
- Spring
- 컨테이너
- spring cloud
- 웹 서버
- HTTP
- 백엔드
- web server
- 배포
- 스프링
- mysql
- 스프링 부트
- JPA
- CS
- spring batch
- ORM
- 영속성 컨텍스트
- 도커
- Today
- Total
목록Spring (21)
개발 일기

Spring에서 외부 API를 요청하는 방법으로 크게 3가지 정도 있다.RestTemplate, WebClient, OpenFeign 등이 있는데 이번에 RestTemplate, WebClient 이 두가지에 대해 집중적으로 알아보겠다.RestTemplateSpring 3.x에서 도입된 동기식 HTTP 클라이언트Multi-Thread, Blocking IO로 동작현재는 maintenance mode로 개발자에게 WebClient사용을 권장한다.Restful 형식에 맞추어진 템플릿Header, Content-Type등 설정하여 외부 API 호출Http 요청 후 json, xml, String 같은 응답을 받을 수 있다.RestTemplate 동작 방법 및 문제점위에서 언급했듯이 RestTemplate은 M..

https://github.com/TanJi-LL/Tanji-Backend해당 블로그는 위 프로젝트에서 내가 직접 구현한 Spring Boot 프로젝트에서 직접 사용한 JWT를 활용한 인가(Authorization)처리 과정을 정리해보고자 한다.지금부터 설명하고자하는 로직은 회원가입이나 로그인 과정이 아닌, 특정 API 요청을 보낸 사용자가 해당 리소스에 대한 권한이 있는지 확인하는 인가(Authorization) 과정을 처리하기 위한 로직에 대한 설명이다인가(Authorization) 처리 흐름도 및 설명우선 처음으로 JwtExceptionFilter로 들어간다. 1. JwtExceptionFilter해당 필터에서는 JWT 처리 중 발생하는 예외를 처리하며, 예외 발생 시 사용자에게 적절한 응답을 반환..

피우다 프로젝트라는 공모전의 본선에 붙게되어 실제 프로젝트에 적용시키기 전에 멀티 모듈을 왜 쓰는 것이 좋은지에 대해 알아보고자 작성하게됐다. 전에 개인적으로 멀티모듈 프로젝트를 구성해봤는데 그때 느낀점을 바탕으로 작성하고자 한다.느낀점을 가독성을 포기하고 줄글로 쭉 풀어 써보고자 한다.모듈(Module)이란?우선 모듈이 뭔지 짚고 넘어가보자. 바로 독립적으로 운영될 수 있는 의미를 가지는 구성요소 단위 왜 멀티 모듈(Multi-Module)을 도입하는지 장점 살펴보기?우선은 왜 사람들이 멀티 모듈 구조를 선택하려고 하는지 장점에 대해 고민해봤다.사실 처음에는 MSA(마이크로 서비스 아키텍처) 처럼 독립적인 배포가 가능한 것도 아니고 더 복잡해지기만 하는 것만 같고 왜 써야하는지 이해가 안갔다. 그래서 ..

JDBC(Java Database Connectivity)란?JDBC(Java Database Connectivity)는 Java에서 데이터베이스에 접속할 수 있도록 하는 Java 표준 API이다.즉, JDBC API를 통해 자바 코드로 데이터베이스를 연결할 수 있고, SQL 쿼리문을 보내서 쿼리를 실행하며 결과 값을 받아올 수 있다. JDBC는 Java 애플리케이션 내에서 JDBC API를 사용하여 데이터베이스에 접근하는 단순한 구조이다. JDBC를 통한 DB 연동 흐름 1. 드라이버 로딩JDBC 드라이버를 사용하여 Java 애플리케이션이 데이터베이스와 통신할 수 있도록 하는 첫 번째 단계.DriverManager 클래스는 JDBC 드라이버를 관리하는 역할을 한다.그러나 JDBC 4.0부터는 드라이버가..

평소 롬복을 쓰면 코드가 확연히 줄게 되어 즐겨 사용한다.그러나 사실 그냥 엔티티에서는 @NoArgsConstructor, @Getter, @Builder 쓰고 Controller, service 등에서는@RequiredArgsConstructor를 많이 쓰니까 나도 따라서 그냥 아무생각없이 쓰고 있었다.그러나 이제 스프링 프레임워크에 차츰 익숙해지고 있으니 이러한 것들도 하나씩 잡고 가야되겠다는 생각이 들어 정리해보게 됐다.Entity에서의 Lombok현재 나는 Entity에서 사용 중인 롬복 어노테이션은 아래와 같다.@Getter@NoArgsConstructor(access = AccessLevel.PROTECTED)@Builder Getter와 Setter를 사용하는 이유객체 지향의 원칙 중 하..

전 게시글에서 Cascade 영속성 전이 그리고 그중에서도 ALL, REMOVE, PERSIST 타입에 대해 집중적으로 이해해봤다.개발하다보면 주로 orphanRemoval=true가 쓰이는 것을 종종 볼 수 있는데 이때 orphanRemoval이 어떤 것을 설정하는 것인지 알아보자.orphanRemoval = true부모 엔티티와 연관관계가 끊어진 자식 엔티티 를 자동으로 삭제해주는 설정이다.Content엔티티에서 Comment와 일대다 관계를 맺을 때 아래와 같이 설정한다고 하자.// Content 엔티티@OneToMany(mappedBy = "content", cascade = CascadeType.ALL, orphanRemoval = true)private List comments = new A..

김영한님 JPA 강의를 들으면서 연관관계 영속성 전이(CASCADE)라는 것에 대해 처음 듣게 됐었는데 실제로 Spring Boot 프로젝트를 하면서 Entity 연관관계를 맺을 때 참고 코드를 보고 따라 쓰고 있으면서 또 Soft Delete할때도 관련 작업을 해야해서 좀 대충 감은 잡았지만 그래도 정확히 알고 써야지 추후에 에러나 좀더 효과적인 개발을 할 수 있을 것 같아 정리하게 됐다.영속성 전이(CASCADE)가 뭔데?말 그대로 영속성의 전이이다. 연관관계를 맺는 두가지 엔티티가 있을 때 특정 엔티티를 영속 상태로 만들면 그 엔티티와 연관관계에 있는 엔티티 또한 영속 상태로 만들때 사용한다.cascade옵션은 JPA에서 @ManyToOne과 @OneToMany관계에서 사용된다.영속성 전이는 연관관..

전 게시글에서 특정 엔티티의 데이터를 제거 시에 Hard Delete하는 방법과 Soft Delete하는 방법 이렇게 두가지가 있고 Soft Delete를 하기 위해서 @SQLDelete와 @SQLRestriction을 통해 구현 가능하다는 사실을 알게 됐다.그런데 만약 예를들어서 내가 멤버를 제거한다고 했을 때 그 연관관계에 있는 댓글들 즉, 해당 탈퇴 처리한 멤버의 댓글들은 어떻게 처리할지에 대한 고민이 생기기 시작했다. 그래서 해당 해결 후 이 블로그 글을 작성하게됐다.첫 번째 방법 - @SQLDelete / @SQLRestriction이 방법은 똑같이 Comment에도 위와 같은 어노테이션을 걸어두는 것이다.// Member Entity// ... 기타 anotation 생략@SQLDelete..