다수와 같이 프로젝트를 할 때 메모를 남기는 것은 필수라고 생각합니다. Swagger, Javadoc 등으로 메모한 내용들을 문서화할 수 있고, 평소에는 Swagger만 사용하다 프로젝트 내부에 조금 더 자세히 기록을 남기고 싶어 오늘은 Javadoc 코드 문서화하는 규칙을 알아보려고합니다 ! JavaDoc Tag와 작성 규칙@version구현체(클래스, 메소드, 변수 등)의 버전@author작성자@deparecated해당 구현체가 곧 삭제, 업데이트 중단을 의미@since해당 구현체가 추가된 버전@see외부 링크나 텍스트, 다른 필드나 메소드를 링크할 때 사용@linksee와 동일한 기능, 참조에 대한 링크 제공@exception발생할 수 있는 Exception을 정의@throws코드에서 throw할 ..
Spring Boot와 Mabatis를 사용하는 프로젝트를 진행하는 중 데이터베이스를 한 프로젝트 내부에서 두개 사용해야될 일이 생겼다.같은 서버, 같은 포트에 등록 되어 있어서(스키마만 다르다.) 쿼리 작성 시 테이블명 앞에 스키마명만 추가해주는 방법도 있지만, 추후 마이그레이션으로 인한 서버 이전과 확장성을 고려하여 DB를 다중으로 연동하기로 했다 ! 💁♂️ DB정보 관리하기applicatio.properties 또는 .yml 파일에 사용할 두 DB의 정보를 입력해줍니다.## main DBspring.main.datasource.driver-class-name=net.sf.log4jdbc.sql.jdbcapi.DriverSpyspring.main.datasource.jdbc-url=jdbc:log..
Linux Ubuntu 환경에 프론트와 백엔드 서버가 각각 배포되어있는 상태입니다.각 회원마다 등록한 본인의 프로필 이미지가 서버 특정 폴더에 저장이 되어있는 상태이고, img 태그의 src 경로를 통해 서버에 업로드 되어있는 이미지를 가져오려합니다 ! ⚙️ 프로젝트 환경Spring Boot : 2.7.14Node : 20.6.0Linux : Ubuntu 22.04 🎇 img태그 설정아래와 같이 /icon-image/를 기본 경로로 지정해 놓고 이후 회원의 이미지 파일명을 받아 서버 폴더에서 불러오려고합니다.만약 파일이 없을 경우에는 public 폴더에 저장해 놓은 기본 이미지를 띄워주겠습니다 !src에 설정해 놓은 경로로 이미지를 서버로 요청합니다.src의 서버의 실제 파일의 위치로 설정해 놓는 것은..
몇 달 전 새로운 프로젝트를 시작하기 앞서 백엔드에서 작업하는 내용을 프론트 개발자들이 직접 확인할 수 있도록 Swagger를 통해 문서화를 진행하기로 했다 ! 문서화를 해놓으면 요청하는 데이터의 타입과 변수명을 직접 확인할 수 있고, 응답되는 타입과 값을 바로바로 확인할 수 있어 소통의 비용이 감소할 수 있습니다 ! 멋쟁이 프론트 개발자가 Swagger에 백엔드 개발자가 문서화한 내용들을 프로젝트 내부에서 모두 가져다 쓸 수 있도록 제작해놔서 코드 제작에 대한 비용도 감소하였다 !그럼 이제 Swagger 적용 방법에 대해 알아보도록 합시다 ! 🫡Swagger 적용하기프로젝트 환경Java : 17Spring-boot : 3.2.7Gradle : 8.8SpringBoot 3.0.0 이상부터는 spri..
Spring에서 Mybatis 사용 중 요청 받은 데이터를 Map으로 받아 로직을 수행하는 중 아래와 같은 오류가 발생했다 !unable to make field private final byte[] java.lang.string.value accessible: module java.base does not "opens java.lang" to unnamed module위 에러를 확인 해보면 java.lang 패키지에 접근할 수 없어 발생하는 오류라고한다.해결 방법을 보니 openJDK 버전 문제일 수도 있고 환경 변수에 문제가 있을 수 있다고 해서 여러가지 방법을 시도해봤지만 ! 여전히 해결되지 않아 Mybatis에서 Map을 사용하는 방법을 다시 한번 찾아보기로했다. 📄기존 코드 IN..
요즘 이것 저것 하느냐고 손이 부족해서 오랜만에 포스팅을 쓰네요 !! 분발하자 !!!! (살려주세요...)@ControllerAdvice와 @RestControllerAdvice 우선 순위에 대해 알아보다 Advice에 대해 같이 정리하면 좋을 것 같아 같이 정리해보려고 합니다🫠 ❓@ControllerAdvice란 ?@ControllerAdvice는 Spring 3.2에서 도입된 어노테이션이고, 모든 @Cotroller 클래스가 공유하는 공통 로직을 정의할 때 사용합니다.주로 예외 처리와 바인딩 설정, 모델 객체 등에 사용됩니다. 아래 예제 코드를 통해 간단히 알아보겠습니다 ! 예제코드NotFoundException이 발생할 경우 error라는 이름의 뷰로 이동하고 메세지를 출력합니다.반환되는 타입을 ..
프로잭트를 진행할 때 예외처리를 많이 사용했지만, 깊이 있게 공부하지 않은 것 같아 정리를 한번 해보려고합니다 !❓예외 처리란 ?예외 처리란 프로그램 실행 흐름상 오류가 발생했을 때 그 오류를 대체하는 방법입니다.에러(Error) : 메모리 부족이나 스택오버플로우와 같이 일단 발생하면 복구할 수 없는 심각한 오류예외(Exception) : 인자값 Null에러 NPE(NullPointException)가 발생하더라도 수습이 가능한 덜 심각한 오류 예외 계층자바는 프로프로그램 실행 중에 발생할 수 있는 예상치 못한, 즉 예외(Exception)를 처리하기 위한 메커니즘을 제공합니다.이는 프로그램의 안정성과 신뢰성을 높이는 데 중요한 역할을 합니다.자바의 예외 처리는 try, catch, finally, th..
❓중첩 클래스란 ?중첩 클래스는 말 그대로 클래스 안에 클래스를 중첩한 것을 중첩 클래스(Nested Class)라고합니다.중첩 클래스의 분류는 아래와 같이 나눌 수 있습니다.중첩 클래스의 선언 위치정적 중첩 클래스는 정적 변수와 같은 위치에 선언되고 내부 클래스의 경우 인스턴스 변수와 같은 위치에 선언됩니다.지역 크래스의 경우 지역 변수와 같은 위치에 선언됩니다. class Outer { ... //정적 중첩 클래스 static class StaticNested { ... } //내부 클래스 class Inner { ... }}또한 정적 중첩 클래스의 경우 정적 변수와 같이 앞에 static이 붙어있고 내부 클래스는 인스턴스 변수와 같이..