Back-End/JavaSpring 17

DIP를 통해 반가운(?) 순환참조 해결하기 (springboot)

1. 문제상황  사이드 프로젝트를 진행하다가 순환참조 문제가 발생했습니다! 상황은 이러합니다, MinioService : 미니오 서버에 이미지를 업로드, 다운로드 가능MultipartUtil : 파일 이름 결정, 확장자 추출 등 파일 관련 서비스가 포함되어 있음 MinioService와 MultipartUtil이 서로의 함수를 사용하기 위해서서로 참조를 하고 있는 상황이었습니다. 그렇기 때문에 아래와 같이 순환참조가 발생하였습니다. springboot는 친절하게도 컴파일 시, 순환참조를 감지해서 에러를 띄워줍니다.    2. 해결  그래서 이 순환참조 문제를 어떻게 해결할까 고민을 해봤습니다. 여러가지 방법을 찾아보다가... 아래와 같은 방법들도 있다는 것을 알게되었습니다.   1. MinioServic..

Back-End/JavaSpring 2025.03.10

요즘은 클라이언트에게 정적 페이지/동적 페이지가 아닌, 데이터를 반환해준다고? (Spring Boot)

동적페이지와 정적페이지, 우리는 이 두 개를 잘 알 것이다.그래도 동작 방식과 차이점에 대해서 정리해두면 좋을 거 같아서 끄적여 본다   동적 페이지와 정적 페이지의 차이점과 동작 방식에 대해서 알아 보겠다. 1. 정적 페이지 처리하기   위의 그림을 보면 쉽게 이해가 될 것이다. 난 spring을 공부하고 있으니, springboot 기준으로 설명하겠다.springBoot 서버에 html파일을 요청하면 해당 html파일을 static폴더에서 찾아서 반환해준다    혹은 template engine에 뷰를 전달해서 정적페이지를 띄워줄 수 있는데,static 폴더에 있는 html파일을  localhost:8080/index.html 처럼, 바로 호출할 수 있지만, 이처럼 브라우저에서 바로 접근하는 것이 싫..

Back-End/JavaSpring 2025.02.27

Jackson이란? (spring boot)

1. Jackson은 뭘까?개발 하다가 jackson 라이브러리를 dependeny에서 확인하게 되었는데,문득 엇 이건 뭐지라는 생각이 들어서 찾아보게 되엇따..   그런데 잠깐... 혹시....   전설의?        그렇다 Jackson은 JSON 데이터 구조를 처리해주는 라이브러리 인 것!! Object -> JSONJSON -> Object 로 변환이 가능하다는 점! Spring은 3.0 버전 이후로 Jackson과 관련된 API를 제공하면서,우리가 직접 소스코드를 작성하여 JSON 데이터를 처리하지 않아도 자동으로 처리해주고 있다.(springboot-starter-web에는 default로 Jackson관련 라이브러리들을 제공하고 있다) 직접 JSON 데이터를 처리해주고 싶으면, Jackso..

Back-End/JavaSpring 2025.02.25

Spring MVC 패턴은 무엇이고 왜 사용하지?

1. MVC란 무엇이고 왜 사용할까개발을 하면서 MVC 패턴에 대한 이야기는 자주 들어왔지만,막상 말로 설명하려고 하니, 어려운 거 같다.  그래 그럼 알아보도록 하자  사실, 우리는 MVC 패턴을 자주 보고 있고 친숙할 것이다.더보기웹 개발자로써, 여러분이 이 패턴을 이전에 의식적으로 사용한 적이 없더라도 아마 상당히 친숙할 것입니다. 여러분의 데이터 모델은 아마 어떤 종류의 데이터베이스에 포함되어 있었을 것입니다(MySQL 과 같은 전통적인 서버 사이드 데이터베이스, 또는 IndexedDB 같은 클라이언트 사이드 솔루션). 여러분의 앱의 제어 코드는 아마 HTML/JavaScript 로 작성되었을 것이고, 사용자 인터페이스는 HTML/CSS 등 여러분이 선호하는 것들로 작성되었을 것입니다. 이는 MV..

Back-End/JavaSpring 2025.02.24

SpringBoot를 잘 알아보자(gradle, apache tomcat, springboot의 탄생배경) - (1)

springboot를 접하고 많은 기초를 뛰어 넘고 프로젝트를 시작하였다..점점 그 깊이가 깊어질수록 제대로 공부를 해야겠다는 마음을 먹었다. 물론, 개발을 할때 모든걸 알고 시작하려는 것은 매우 미련한 행동이라고 생각하는데어느정도 감을 잡았을 때는, 다시한번 뒤로 돌아와 기초를 다지는 것이앞으로 큰 프로젝트를 준비하는데 큰 도움이 될 것이다. 전반적으로 springboot에 대한 이야기를 할 예정인데먼저 Gradle에 대해서 이야기를 해보겠다. spring과 springboot에 대한 이야기더보기 spring 프레임워크는 바야흐로 2004년 1.0이 등장한 이후에 20년넘게 사랑받으며 업그레이드 되었고, 현재는 Spring 6.0이 등장!  Spring은 AOP, IoC/DI 등과 같은 아주 강력한 핵..

Back-End/JavaSpring 2025.02.17

SpringBoot 팀 프로젝트 초기 세팅

안녕하세요 오늘은 springboot 팀 프로젝트 초기세팅에 대해서이야기 해보려고합니다. 다양한 프로젝트에 참여하다보니프로젝트 초기세팅에 많은 시간을 투자한다는 것을 알게되었습니다.그만큼 중요해서 그렇겠죠? 각설하고,여러 프로젝트를 하면서 제가 항상 갖추던 개발 초기세팅을 공유하겠습니다   1. 프로젝트 개발 프로세스 파악먼저 프로젝트를 시작하기 위해서는 개발환경을 파악하는 것이 중요합니다아래는 초기 프로젝트에 필요한 개발 프로세스를 작성한 것입니다. 아래와 같이 정리해서 아카이빙 해두면 나중에 프로젝트를 진행할때 참고도 할 수 있고프로젝트를 진행하면서 계속 확인하면서 할 수도 있어서한번 미리 정리해두고 개발하는 것이 유리합니다기술 스택 - 백엔드: Spring Boot 3.x - 데이터베이스..

Back-End/JavaSpring 2025.02.13

DTO 에서 회원정보 유효성 검증하기 (spring boot, @Valid)

회원가입에서 유저 정보를 받아올때, 아이디,패스워드,이메일,성별 등의 유효성 검증은 필수적입니다.아이디의 최소/최대 글자 수는 충족하였는지, 패스워드에서 특수문자와 영문자는 포함되었는지 등을 검증하는 로직이 필요합니다. 이에 대한 검증 로직을 모두 추가해주어야 하는 두려움이 발생하였지만, 그 두려움도 잠시스프링에서 유효성 검증을 해결해주는 dependency를 찾았습니다!!제가 구현한 검증 로직은 아래와 같습니다.  1. validation dependency 추가하기 implementation 'org.springframework.boot:spring-boot-starter-validation' 이전에는 spring-boot-starter-web 의존성 내부에 validation이 있었지만,spring..

Back-End/JavaSpring 2024.12.24
728x90