안녕하세요 오늘은 Spring Cloud Gateway 에 대해서 알아보겠습니다 🎅
들어가면서 안녕하세요 오늘은 CSRF(Cross-Sirte Request Forgery Attack) 에 대해 알아보겠습니다. 요즘 프로젝트 진행을 하면서 사용자 인증 & 인가 부분을 담당하고 있습니다. 이때 Spring Security 와 Oauth2.0 을 사용하고 있는데요. 이때 Spring Security 설정을 위해 작성하는 코드에서 대부분에 코드에 CSRF 을 비활성화 해놓습니다. 지금까지는 다른 사람의 코드를 참고했기 때문에 당연하게 비활설화 했지만 이유를 알고 사용하자는 생각에 이번 기회에 CSRF 에 대해 자세히 알아보고자 합니다 👨💻 CSRF, Cross-Site Request Forgery 본격적으로 CSRF 에 대해 알아보겠습니다
안녕하세요 오늘은 데이터베이스 초기화 작업과 관련해서 제가 깨달은 점들을 정리하려고합니다 🏡 🌱 스프링부트의 DDL 자동 생성 기능 Spring 을 공부해본 이들이 잘 알다싶이 Springboot 에서 제공하는 기능입니다 ❗️ ddl-auto는 데이터베이스 스키마(DDL) 을 자동으로 생성 또는 변경하는 옵션으로 create-drop,create,update,validate 그리고 none이 있습니다. 각 옵션에 대해서는 [Spring JPA] ddl-auto 기능은 무엇일까?
안녕하세요 오늘은 MSA_structure 프로젝트 를 통해 MSA 구조에 대해 공부하던 중 마주쳤던 `Failed to start bean 'documentationPluginsBootstrapper'; nested exception is java.lang .NullPointerException: Cannot invoke "org.springframework.web.servlet.mvc.condition .PatternsRequestCondition.getPatterns()" because "this.condition" is null` 에러에 대해 원인과 해결법을 알아보겠습니다. 🧑🔧 관련 코드 코드를 보면 알겠지만 spring boot 2.7.9 를 사용했으며 Java 는
안녕하세요 TIL 첫번째 시간입니다. 2023/06/07 배운것을 정리해보겠습니다 👨💻 1. Spring Test Context 란? Spring Test Context 에 대해 알아보기 전에 Spring Application Context 에 대해 알아봅시다. 자세히 알고 싶다면 여기를 참고해주세요 ❗️ Application Context 는 Spring 어플리케이션이 구동시에 생성되는 IoC의 엔진역할을 하는 컨테이너 입니다. Bean 들을 생성하고 관리하는 Bean Factory 를 상속하여 확장한 개념으로 application 의 구성 요소
안녕하세요 오늘은 Open Feign 을 사용해보고 정리하는 시간을 가지겠습니다. 들어가기 앞서 Open Feign 을 적용한 프로젝트를 참고하시려면 여기 를 참고해주세요 ❗️ 🐯 OpenFeign 이란?
안녕하세요 이번 포스팅에서는 코프링 프로젝트를 진행하면서 마주친 Muliti-Module 의존성 주입에 대한 오류와 이를 해결하면서 알게된 내용들을 정리하려고 합니다 👨💻 프로젝트에 대한 소스는 참고 해주세요 ❗️ 🧃 Mulit-module 로 설계 하는 이유 많은 개발 전문가들은 Monolitic 방식의 개발보다는 Multi-Module 방식의 개발을 선호하며 현재 대다수의 프로젝트가 이러한 방식으로 진행되고 있습니다. 그렇다면 왜 번거롭게 Multi-Module 을 사용해야할까요? 모듈성과 재사용성 : Mutli-Module 은 기능 또는 역할에 따라 프로젝트를 분리함으로써 각 모듈은 독립적으로 개발 및 테스트가 가능합니다. 이는 코드의 재사용성을 향상시키고 유지보수를 용이하게 합니다. 독립적인 빌드와 배포 : 각 모듈은 개별
안녕하세요 오늘은 현재 트렌드를 선도한 개발 방법론인 MSA(Micro Service Architecture) 에 대해 정리보고자합니다. 🏡 MSA 를 사용하는 이유
안녕하세요 오늘은 일명 코프링 에서 JPA Entity 를 사용하는 방법에 대해 알아보겠습니다 ❗️ 🧠 Kotlin 그리고 JPA Entity 현재 진행중인 Kafka 를 이용한 Multi-Module 심사 대출 프로젝트 를 진행하다가 Java 로 스프링을 개발하면서 사용했던 관습들이 Kotlin 을 이용한 스프링에서 문제가 발생할 수 있다는 점을 알게 되었습니다. 특히 Domain 에서 Entity 를 설계하는 도중 많은 궁금중이 생겨 이번 포스팅을 통해 정리해보려고 합니다 ❗️ 해당 포스팅에서는 Parent Entity 와 Child Entity 를 예시로 들어보겠습니다.
안녕하세요 오늘은 Spring System properties 를 설정하는 방식과 이를 환경에 따라 효과적으로 설정하는 방법인 Spring Profile 에 대해 알아보겠습니다. 해당 포스팅을 읽어보기 전 [ Spring 설정 파일에 있는 설정 값을 애플리케이션에서 활용하는 방법 (@Value,@ConfigurationProperties)](https://velog.io/@choidongkuen/Spring-Spring-%EC%84%A4%EC%A0%95-%ED%8C%8C%EC%9D%BC%EC%97%90-%EC%9E%88%EB%8A%94-%EC%84%A4%EC%A0%95-%EA%B0%92%EC%9D%84-%EC%95%A0%ED%94%8C%EB%A6%AC%EC%BC%80%EC%9D%B4%EC%85
안녕하세요 오늘은 Redis 직렬화 방식에 대해 살펴보겠습니다 💪 우리는 앞서 Spring Data Redis 의존성과 함께 다양한 방법으로 Spring 서버에서 Redis 를 사용해보았습니다. Redis에 대해 알아봅시다(응용편) 를 참고해주세요! 📀 개요 [Redis에 대해 알아봅시다.(이론편)](https://velog.io/@choidongkuen/Redis%EC%97%90-%EB%8C%80%ED%95%B4-%EC%95
안녕하세요 오늘은 현재 가장 많이 사용되는 암호화 방식은 AES 을 알아보겠습니다 🐳 이번 포스팅은 제가 AES 에 공부하면서 같이 공부했던 내용들을 함께 정리하는 목적을 가집니다 ❗️ 🔑 대칭키와 비대칭키 대칭키 암호화 방식 대칭키 란 암복호화에 사용하는 키가 동일한 암호화 방식입니다. 따라서 암복호화에 참여하는 쪽에서만 해당 키를 통해 데이터에 접근할 수 있습니다. 대표적인 대칭키 알고리즘으로는 DES,AES SEED 등이 있습니다. 대칭키 암호화 방식은 비대칭키 암호화 방식에 비해 속도가 빠르다는 장점이 있지만 암복호화에 사용되는 키가 하나이기 때문에 키를 교환해야하는 문제 가 발생합니다. 이는 키 탈취 문제를 야기할 수 있으며 해당 데이터를
안녕하세요 오늘은 코틀린(Kotlin) 을 이용한 대출 심사 프로젝트 를 진행하던 도중 마주친 An operation is not implemented: Not yet implemented 오류 해결에 대해 기록을 남겨보려고 합니다 🤔 해당 프로젝트는 대출 심사 프로젝트 🏦 을 참고해주세요! 먼저 오류와 관련된 코드 부분부터 살펴보겠습니다 ❗️ 👨🔧 관련 코드 이제 오류를 발생시킨 대망의 테스트 코드를 살펴보겠습니다 🤔 테스트를 잘 작성하고 코드를 돌려보았습니다 그런데... 👨🔧 해결방안 해당 오류가 발생했습니다. **약 1시간
안녕하세요 오늘은 웹 크롤링을 이용한 배당금 프로젝트 를 진행하던 도중 마주친 Could not create query for public abstract java.util.Optional 오류 해결에 대해 기록을 남겨보려고 합니다 👨💻 해당 소스가 궁금하시다면 웹 크롤링을 이용한 배당금 프로젝트💰 을 참고해주세요! 먼저 오류와 관련된 코드 부분부터 살펴보겠습니다 ❗️ 👨🔧 관련 코드 두개의 코드는 프로젝트를 진행하면서 Member 엔티티를 나타내고 저장하기 위한 코드입니다. MemberRepository 인터페이스에는 두개의 메소드가 구현되어 있습니다. 해당 메
안녕하세요 오늘은 스프링 빈을 등록하는 어노테이션에 대해 알아보겠습니다 👨💻 ☘️ Spring Bean 이란? Spring 에서 가장 기본이 되는 Spring Bean 에 대한 이야기부터 해보겠습니다. Spring Bean 은 Spring 의 DI Container(IoC Container 혹은 Spring Container) 에 의해 관리되는 POJO(Plain Old Java Object) 입니다. Spring 을 조금이라도 공부해본적이 있다면 이에 대해 쉽게 들어볼 수 있습니다. 그만큼 Spring Bean 과 이를 관리하는 DI Container 는 Spring의 근간이 되는 핵심 요소입니다 🌟 POJO(Plain Old Java Objec
안녕하세요 오늘은 스프링에서의 중요한 개념인 AOP(Aspect Object Programming) 에 대해서 배워보겠습니다 👨💻 🧙♀️ AOP 개념 어플리케이션은 다양한 공통 기능을 필요로 합니다. 로깅과 같은 기본적인 기능에서부터 트랜잭션이나 보안과 같은 기능에 이르기까지 어플리케이션 전반에 걸쳐 적용되는 공통 기능이 존재합니다. 이들 공통 기능들은 어떤 특정 모듈에서만 필요로 하는 것이 아니라, 어플리케이션 전반에 걸쳐 필요한 기능입니다 👨💻 핵심 비즈니스 기능과 구분하기 위해 공통 기능을 공통 관심 사항(Cross-Cutting Concerns) 이라고 표현하며, 핵심 로직을 핵심 관심 사항(Core-Concerns) 이라고 합니다.
안녕하세요 오늘은 Spring boot 사용시 필수적으로 알아야 하는 Servlet 과 Servlet Container 에 대해 알아보겠습니다 👨💻 🔔 WAS(Web Application Server) 란? Servlet 에 대한 전반적인 개념을 배우기 전 WAS(Web Application Server 에 대해 알아봅시다 👀 우리가 사용하는 웹 페이지에는 정적 페이지와 동적 페이지가 존재합니다. 정적 페이지(Static Pages) Web Server 는 파일 경로 이름을 받아 경로와 일치하는 file 을 반환합니다. 이때 항상 동일한 페이지를 반환합니다. ex) image, html, css, javascript 과 같이 서버 컴퓨터에 이미 저장되어
안녕하세요 오늘은 Reflection API와 JPA 엔티티 에 파라미터가 없는 기본 생성자가 필요한 이유에 대해 알아보겠습니다 👨💻 🌈 Reflection API 에 대해 Spring 을 학습하다 보면 Java Reflection API 를 자주 접하게 됩니다. 해당 API 는 사실 자바 관련 개념에서는 자주 쓰이지 않으며 보통 프레임워크나 라이브러리에 자주 사용됩니다 👨💻 > Reflection API 란 구체적인 클래스 타입을 알지 못해도 클래스의 정보(메서드, 타입, 변수 등) 에 접근할 수 있게 해주는 API 입니다. 이 문장은 Reflection API 에 대해 가장 잘 나타낸 문장이지만 처음 해당 개념을 접한 사람이라면 이해하기 어렵습
Spring 에서는 클라이언트 측에서 보낸 데이터를 Java 코드에서 사용할 수 있는 객체로 만들어주는 것과 관련해서 @RequestParam , @ModelAttribute 그리고 @RequestBody 3가지 어노테이션을 제공합니다. Spring 을 이용한 개발을 할때 각 어노테이션의 세부 수행 동작 원리에 대해 완벽하게 숙지하지 않은 채로 진행한다면, 얘기치 못한 에러의 늪에 빠지기 쉽습니다. 이번 포스팅에서는 3가지 어노테이션의 세부 기능과 차이점에 대해 알아보겠습니다 👨💻 🤖 @RequestParam > @RequestParam은 1개의 Http 요청 파라미터(변수) 를 받기 위해서 사용됩니다. 예제 @RequestParam 를 이용
안녕하세요 오늘은 스프링 JPA 에서 핵심적인 기능을 하는 데이터베이스 방언(Dialect) 에 대해 알아보겠습니다 👨💻 👾 ANSI SQL SQL(Structured Query Language) 이란 관계형 데이터베이스에 정보를 저장하고 처리하기 위한 프로그래밍 언어입니다. 데이터베이스를 조금이라도 공부해보았더라면 다양한 RDBMS Vendor 가 존재한다는 것을 알 수 있습니다. MS-SQL, Oracle, MySQL,PostgreSQL 등 다양한 데이터베이스 공급업체가 있습니다. 이렇게 다양한 DBMS Vendor 가 존재하는 만큼 서로 자신만의 고유한 SQL 을 가집니다. 이에 따라 표준화된 SQL 에 대한 필요성이 생겼으며 `미국 표준 협회(AN