인기글
최신글
[Spring, SpringBoot] 다중 DB 연동하기
Java2024.10.08 18:46[Spring, SpringBoot] 다중 DB 연동하기

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..

[Java, Spring] Linux 파일 서버 경로 연결하기
Java2024.10.01 15:32[Java, Spring] Linux 파일 서버 경로 연결하기

Linux Ubuntu 환경에 프론트와 백엔드 서버가 각각 배포되어있는 상태입니다.각 회원마다 등록한 본인의 프로필 이미지가 서버 특정 폴더에 저장이 되어있는 상태이고, img 태그의 src 경로를 통해 서버에 업로드 되어있는 이미지를 가져오려합니다 ! ⚙️ 프로젝트 환경Spring Boot : 2.7.14Node : 20.6.0Linux : Ubuntu 22.04 🎇 img태그 설정아래와 같이 /icon-image/를 기본 경로로 지정해 놓고 이후 회원의 이미지 파일명을 받아 서버 폴더에서 불러오려고합니다.만약 파일이 없을 경우에는 public 폴더에 저장해 놓은 기본 이미지를 띄워주겠습니다 !src에 설정해 놓은 경로로 이미지를 서버로 요청합니다.src의 서버의 실제 파일의 위치로 설정해 놓는 것은..

[Spring, Swagger] Swagger 적용하기 및 기본 경로 변경하기
Java2024.09.21 15:44[Spring, Swagger] Swagger 적용하기 및 기본 경로 변경하기

몇 달 전 새로운 프로젝트를 시작하기 앞서 백엔드에서 작업하는 내용을 프론트 개발자들이 직접 확인할 수 있도록 Swagger를 통해 문서화를 진행하기로 했다 ! 문서화를 해놓으면 요청하는 데이터의 타입과 변수명을 직접 확인할 수 있고, 응답되는 타입과 값을 바로바로 확인할 수 있어 소통의 비용이 감소할 수 있습니다 ! 멋쟁이 프론트 개발자가 Swagger에 백엔드 개발자가 문서화한 내용들을  프로젝트 내부에서  모두 가져다 쓸 수 있도록 제작해놔서 코드 제작에 대한 비용도 감소하였다 !그럼 이제 Swagger 적용 방법에 대해 알아보도록 합시다 ! 🫡Swagger 적용하기프로젝트 환경Java : 17Spring-boot : 3.2.7Gradle : 8.8SpringBoot 3.0.0 이상부터는 spri..

Java, Spring
[Java, 자바] 예외 처리란 ?
[Java, 자바] 예외 처리란 ?
Java
2024.07.31 23:28
프로잭트를 진행할 때 예외처리를 많이 사용했지만, 깊이 있게 공부하지 않은 것 같아 정리를 한번 해보려고합니다 !❓예외 처리란 ?예외 처리란 프로그램 실행 흐름상 오류가 발생했을 때 그 오류를 대체하는 방법입니다.에러(Error) : 메모리 부족이나 스택오버플로우와 같이 일단 발생하면 복구할 수 없는 심각한 오류예외(Exception) : 인자값 Null에러 NPE(NullPointException)가 발생하더라도 수습이 가능한 덜 심각한 오류 예외 계층자바는 프로프로그램 실행 중에 발생할 수 있는 예상치 못한, 즉 예외(Exception)를 처리하기 위한 메커니즘을 제공합니다.이는 프로그램의 안정성과 신뢰성을 높이는 데 중요한 역할을 합니다.자바의 예외 처리는 try, catch, finally, th..
[Java, 자바] Enum에 대하여
[Java, 자바] Enum에 대하여
Java
2024.07.16 19:09
Enum이란 ?Enum은 'Enumeration'의 약자로 '열거', '목록'이라는 뜻을 가지고 있습니다. 말 그대로 관련있는 상수들의 집합이며, final로 String, int 등을 나타내는 일정 개수의 기본 자료형의 값을 고정할 수 있습니다. Enum의 장점Enum은 허용 가능한 값을 제한 할 수 있다는 장점을 가지고 있습니다. 예를 들어 매개변수로 문자열을 입력 받았을 경우 미리 선언해 놓은 값과 다른 값이 들어올 경우, 혹은 오타가 발생했을 때의 에러를 방지할 수 있습니다.또한 수정 시 변경 범위가 최소화 됩니다. 즉, 확장성을 높일 수 있고 코드가 단순해져 가독성이 좋아집니다.마지막으로 인스턴스 생성과 상속을 방지하여 상수값의 안전성이 보장된다는 장점을 가지고 있습니다. Enum 예제선언하기먼..
[Java, 자바] 중첩 클래스와 내부 클래란 ?
[Java, 자바] 중첩 클래스와 내부 클래란 ?
Java
2024.07.29 23:27
❓중첩 클래스란 ?중첩 클래스는 말 그대로 클래스 안에 클래스를 중첩한 것을 중첩 클래스(Nested Class)라고합니다.중첩 클래스의 분류는 아래와 같이 나눌 수 있습니다.중첩 클래스의 선언 위치정적 중첩 클래스는 정적 변수와 같은 위치에 선언되고 내부 클래스의 경우 인스턴스 변수와 같은 위치에 선언됩니다.지역 크래스의 경우 지역 변수와 같은 위치에 선언됩니다. class Outer { ... //정적 중첩 클래스 static class StaticNested { ... } //내부 클래스 class Inner { ... }}또한 정적 중첩 클래스의 경우 정적 변수와 같이 앞에 static이 붙어있고 내부 클래스는 인스턴스 변수와 같이..
[Java, Spring] Logging, @Slf4j란 ?
[Java, Spring] Logging, @Slf4j란 ?
Java
2024.07.29 20:34
이번에 작은 사건 사고를 겪으면서 로그를 꼭 남겨야겠구나....싶어서 로그에 대해 알아보던 중 회사 내에서 사용하고 있는 방법 중 @Slf4j 어노테이션을 통해 로그를 관리하고 있는 것을 확인 !@Slf4j 어노테이션의 코드를 이해하기 위해 먼저 Slf4j와 로깅에 대해 공부해보려고합니다 ! ❓로깅이란 ?로깅은 프로그램 동작 시 발생하는 모든 일을 기록하는 행위 입니다. 모든 일이란 서비스 동작 상태와 장애로 나눌 수 있습니다. 서비스 동작 상태에는 시스템 로딩, HTTP 통신, 트랜잭션, DB 요청, 의도를 가진 Exception 등이 있고, 장애(exception, error)로는 I/O Exception, NullPointException, 의도하지 않은 Exception 등이 있습니다. 로깅은 다..
[Java, 자바] 불변 객체에 대하여
[Java, 자바] 불변 객체에 대하여
Java
2024.06.27 23:03
클래스를 불변으로 설계하는 이유자바에서 클래스를 불변으로 설계하는 이유는 캐시의 안정성, 멀티 쓰레드의 안정성, 엔티티의 값 타입 등 다양한 이유에서 클래스를 불편으로 설계하고 있습니다. 하지만 모든 클래스를 불변으로 만드는 것은 아닙니다.대부분 의 클래스는 값을 변경할 수 있게 만들어지는 가변 클래스가 일반 적이고, 불변 클래스는 값을 변경하면 안되는 특별한 경우에 만들어서 사용한다고 생각하시면 됩니다 !캐시, 멀티 쓰레드 등에 대해 해당 글에서 깊이 설명하지 않지만 앞으로의 포스팅을 통해 하나하나 알아가보겠습니다 :) 기본형과 참조형의 공유먼저 자바의 데이터 타입을 가장 크게 기본형(Primitive Type)과 참조형(Reference Type)으로 나눌 수 있습니다.기본형 : 하나의 값을 여러 변..
Linux
[Linux] 쓸모있는 Linux 명령어 모음집
[Linux] 쓸모있는 Linux 명령어 모음집
Linux
2024.05.21 16:01
개발 하면서 종종 사용하는 Linux 명령어 모음집 ! 계속계속 업데이트할 예정입니다~~Linux 명령어포트 죽이기kill -9 PID번호 실행 중인 포트 조회하기// 전체 포트 조회sudo netstat -nlpt// 특정 포트 조회sudo netstat -nlpt | grep 포트번호// 백그라운드에서 실행 중인 포트 조회sudo netstat -tuln DNS 정보 조회하기nslookup 도메인이름 ufw 방화벽 목록 확인하기sudo ufw status verbose ufw 방화벽에 포트 추가하기sudo ufw allow 포트번호 파일 권한 확인하기ls -al파일, 폴더에 권한 부여하기// 777은 모든 권한sudo chmod 777 파일이름 파일 내용 보기// 파일 내용 출력하기cat 파일명// ..
[Linux] Eleasticsearch, Logstash 설치하기
[Linux] Eleasticsearch, Logstash 설치하기
Linux
2024.05.20 10:58
설치환경- Linux : Ubuntu 22.04- Eleasticsearch, logstash : 7.17.21Docker를 이용한 설치가 아닌 Ubuntu 자체에 설징하는 방법입니다 ! Java 설치하기OpenJDK를 설치한 후 진행하야됩니다 ! 아래있는 게시글을 통해 어렵지 않게 설치할 수 있습니다 ! [Java, Linux] Linux에 Java 17 설치하기설치환경- Linux : Ubuntu 22.04- JDK : openjdk-amd64 v17 설치하기① Ubuntu로 접속한 뒤 sudo 권한으로 apt를 업데이트한 이후 openjdk를 설치합니다.$ sudo apt update$ sudo apt install openjdk-17-jdk ② 설치한 자바 버전chanhan.tistory.com..
[Linux] Mac에서 기본 터미널로 외부 SSH 연결하기
[Linux] Mac에서 기본 터미널로 외부 SSH 연결하기
Linux
2024.05.08 13:01
Mac OS X는 UNIX기반의 운영체제로 OpenSSH SSH Client와 SSH Server를 기본적으로 포함하고있습니다 !Mac에서 사용할 수 있는 다양한 SSH 클라이언트 프로그램이 있지만, Mac에 설치되어있는 기본 터미널로도 원격지에 있는 서버에 SSH연결할 수 있습니다 ! 터미널로 SSH 연결하기어렵지 않게 아래의 명령어를 통해 원격지 서버에 SSH 연결을 할 수 있습니다.ssh [원결지서버 ID]@[원격지서버 HostName] -p [포트번호] 예) ssh root@10.10.10.12 -p 2233  서버의 포트번호가 ssh의 기본 포트번호 22번이라면 -p 옵션을 생략해줄 수 있습니다 !ssh [원결지서버 ID]@[원격지서버 HostName] 예) ssh root@10.10.10.12
[Linux] nginx에 certbot으로 SSL(https) 보안 인증서 적용하기
[Linux] nginx에 certbot으로 SSL(https) 보안 인증서 적용하기
Linux
2024.05.04 19:19
프로젝트를 배포하고 SSL 설정은 급한게 아니라 천천히 하려고 했지만 배포한 http에서 cookie에 저장이 안되는 이슈가 생겼다....이유는 https 적용할 경우 해결된다고 해서 부랴부랴 cerbot으로 SSL 적용을 했다 ! Let's Encrypt이란 ?Let's Encrypt는 무료 SSL/TLS 인증서를 얻고 설치할 수 있는 인증 기관으로, 웹 서버에서 암호화된 HTTPS를 사용할 수 있도록 해줍니다. 또한 Certbot이라는 자동화 클라이언트를 제공하여 Apache 및 nginx에서 인증서를 획득하고, 설치하는 전체 프로세스가 자동화 되어있습니다.참고로 Let's Encrypt 인증서의 경우 유효기간은 3개월(90일)로 기간이 짧습니다. 가장 큰 이유로는 짧은 주기의 자동 갱신을 권장하여 ..
image