JAVA/spring

· JAVA/spring
0. 이 글을 작성하는 이유 토이 프로젝트를 진행하면서 gRPC를 사용하려는데 rpc파일들은 submodule로 관리를 하려고 한다. 일단 붙이긴 해서 여기서 더 효율적인 gradle내용과 이쁘게 하기 위해 수정은 해야겠지만 기록 및 공유하기 위함 1. 일단 왜 gRPC를 붙이려고 했는가? 토이 프로젝트가 MSA환경으로 구축하고 있는데 각 서비스 간 통신을 하기 위해 gRPC를 택했다. 2. 그래서 gradle은 어떻게 했는가? 인터넷 짜집기를 좀 많이 했다. 분명 수정해야 할 것들이 존재할 거다. 내가 작성한 gradle은 아래와 같다. import org.jetbrains.kotlin.gradle.tasks.KotlinCompile import com.google.protobuf.gradle.* pl..
· JAVA/spring
0. 이 글을 작성하는 이유 Spring API Gateway를 사용하며 정리하기 위해 1. 이전 글에서 좀 달라진 점 이전 글 : https://developer-youn.tistory.com/174 Spring Cloud Netflix Zuul을 바라보며 0. 이 글을 작성하는 이유 회사에서 API Gateway에 Spring Cloud Netflix Zuul이 적용되어 있는데 이게 뭐 하는 놈인지 간단하게 알고 가기 위함(추후 더 자세히 작성되는 글이 올라올 수도..) 1. Spring Cloud와 developer-youn.tistory.com 토이프로젝트에서 kotlin + jdk17 + spring boot3을 사용하며 API Gateway를 사용하려고 했는데 netflix-zuul의 경우 더..
· JAVA/spring
0. 이 글의 목적 테스트 환경에서 H2를 사용하다 보니 jsonb같은 dialect를 이해하지 못하는 상황이 발생함 Postgresql95Dialect로 dialect에 대해 설정하는 등 다양한 방법을 시도해 보았으나 실패하다 테스트 DB자체를 바꾸면 되는 거 아닌가 하는 생각으로 구글링과 함께 스타트 1. 동작 방식 요약 postgresql 도커 컨테이너를 내부적으로 띄워서 h2가 아닌 이 컨테이너와 통신하며 테스트를 진행하는 방식입니다. 초기 이미지 pulling으로 인해 시간이 조금 더 걸릴 수 있습니다. 2. gradle 설정 testImplementation("org.testcontainers:testcontainers:1.17.3") testImplementation("org.testcont..
· JAVA/spring
0. 이 글을 작성하는 이유 회사에서 API Gateway에 Spring Cloud Netflix Zuul이 적용되어 있는데 이게 뭐 하는 놈인지 간단하게 알고 가기 위함(추후 더 자세히 작성되는 글이 올라올 수도..) 1. Spring Cloud와 Spring Cloud Zuul 우선 Spring Cloud는 MSA를 구축할 때 도움이 되는 여러 기능들을 제공한다. Spring Cloud의 프로젝트 안에 다양한 프로젝트들이 존재하는데 그중 Spring Cloud Netflix가 존재한다. Spring Cloud Netflix에는 Zuul이 포함되어 있다. 정확히는 Spring Cloud Zuul이 아닌 Netflix Zuul이고 이를 Spring Cloud에서 활용한 기술이 활용한 기술이 Spring ..
· JAVA/spring
0. 이 글을 쓰는 이유 대부분의 spring security 가이드에서는 csrf를 disable하는데 csrf는 뭐고 왜 disable처리하는지 궁금해서 정리하기 위함 1. CSRF란? Cross Site Request Forgery : 사이트간 위조 요청 웹사이트 취약점 공격 방법 중 하나로 사용자가 자신의 의지와는 무관하게 공격자가 의도한 행위를 특정 웹사이트에 요청하게 하는 공격 2. Spring Security에서는? CSRF에 대한 예방 기능을 제공한다. https://docs.spring.io/spring-security/reference/features/exploits/csrf.html Cross Site Request Forgery (CSRF) :: Spring Security When..
· JAVA/spring
0. 이 글을 작성하는 이유 엔티티 테스트 하는 방법에 대해 이게 맞는지는 잘 모르겠으나 내가 하고 있는 방식을 공유하고 정리하기 위함 1. 테스트 프레임워크 및 개발 환경 IntelliJ + spring boot 3.x 버전을 사용하면서 같이 들어있는 junit5를 사용 2. 엔티티의 구조 @Entity @Getter public class Bean { @Id @Column(name = "bean_id") @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; private Long price; @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.A..
· JAVA/spring
0. 이 글을 작성하는 이유 slack webhook연동에 대한 글을 작성하다 discord에 대한 연동도 작성하면 재미있을 것 같아서 빠르게 메시지 한정으로 작성해 봅니다. 이 글을 읽기 전 이전 글을 읽고 오는 것을 추천합니다. 대부분의 구조를 동일하게 가져갑니다. https://developer-youn.tistory.com/149 spring + slack webhook 연동하기 0. 이 글을 작성하는 이유 서비스를 운영 중 문제가 발생했을 때 slack으로 알람을 주기 위해 webhook이 가장 구현이 편해서 공유하고자 함 1. 준비 과정 실은 아래 2개의 문서를 참고하면 잘 된다. 역 developer-youn.tistory.com 1. 웹훅 추가 슬랙과는 다르게 외부로 노출되지 않으므로 웹후..
· JAVA/spring
0. 이 글을 작성하는 이유 서비스를 운영 중 문제가 발생했을 때 slack으로 알람을 주기 위해 webhook이 가장 구현이 편해서 공유하고자 함 1. 준비 과정 실은 아래 2개의 문서를 참고하면 잘 된다. 역시 공식문서가 잘 되어있으면 개발자가 편하다. https://slack.dev/java-slack-sdk/guides/web-api-client-setup Installation | Slack SDK for Java API Client Installation The first step to using the Slack API client is installing the slack-api-client module. This guide shows you how to set up using Maven,..
· JAVA/spring
0. 이 글을 쓰는 이유 강의에서는 SpringBoot 2.x버전과 junit4를 붙여서 테스트를 진행하는데 내 환경은 SpringBoot 3.x버전이라 @RunWith가 먹히지 않았고 @SpringBootTest 어노테이션 하나로 퉁칠 수 있다고 한다. 도대체 왜 그게 가능한지 간단하게 정리를 해보기 위해 이 글을 작성한다. 1. Junit4와 Junit5 그리고 SpringBoot 우선 Spring Boot 2.2.x 버전을 기점으로 이후 버전은 Junit5를, 이전 버전은 Junit4를 기본 테스트 모듈로 제공한다. Junit4는 모노리식 아키텍처로 되어있고 Junit5는 모듈화 된 아키텍처로 되어있다. Junit5의 주요 모듈은 크게 3가지로 Junit Platform, Junit Jupiter,..
· JAVA/spring
JPA란? Java Persistence API의 약자다. 자바에서 관계형 데이터베이스를 사용하는 데 필요한 기능을 제공하는 ORM기술이다. Spring Data JPA란? 위에서 언급한 JPA를 쉽게 사용할 수 있도록 스프링에서 제공하는 프레임워크다. 쿼리 생성, 페이징, 정렬, 캐싱 등의 기능을 제공해준다. 위에서 JPA가 ORM기술이라고 했는데 Spring Data JPA는 다양한 데이터베이스와의 호환을 도와준다. 공식 문서에서는 아래 예제가 먼저 우리를 반겨주고 있다. public interface CrudRepository extends Repository { S save(S entity); (1) Optional findById(ID primaryKey); (2) Iterable findAll..
Berno
'JAVA/spring' 카테고리의 글 목록