분류 전체보기 71

Docker Volume 개념 및 활용 예시

도커에서 컨테이너가 제거되면 내부에 저장되어 있던 데이터까지 함께 삭제되어 없어지는 문제가 있다.이를 방지하기 위해 개념인 볼륨(Volume)을 활용하여 MySQL 컨테이너를 실행해 보자.볼륨(Volume)을 활용해 MySQL 컨테이너 실행$ docker run -v C:\docker-workspace\mysql/mysql_data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=password -d -p 3306:3306 mysql볼륨은 -v 옵션을 통해 설정이 가능하며, 사용법은 '-v [호스트의 폴더 절대경로]:[컨테이너의 폴더 절대경로]'이다(다른 옵션들의 의미는 여기에서 확인). 포인트는 아래와 같다. 별5개로 중요!!!🤩[호스트의 폴더 절대 경로]에 디렉토리가 이미 존재할..

Docker 2025.04.28

Docker 명령어 사용 및 예시(nginx 설치&실행)

Docker를 이용하여 nginx를 실행해 보겠습니다.진행하면서 쓰이는 각각의 명령어에 대해서도 순서대로 정리해 봤습니다. 명령어를 통해 nginx 이미지 다운받기도커(Docker)가 실행되어 있는 상태에서 CMD 또는 PowerShell에 'docker pull nginx' 명령어만 실행하면 nginx를 설치할 수 있다. 이때 이미지를 다운로드받는다고 표현하는데, 여기서 우리는 nginx 이미지를 설치(pull)한 것이다. 이미지(Image)란 특정 프로그램을 실행하는 데 필요한 모든 정보(버전, 설정 등)를 포함한 것이라고 이해하면 된다. 추가적인 개념 내용은 여기에서 확인.$ docker pull nginxUsing default tag: latestlatest: Pulling from librar..

Docker 2025.04.25

Docker Desktop 설치 및 확인

도커(Docker)를 Windows나 macOS 같은 데스크탑 환경에서 쉽게 사용할 수 있도록 도와주는 Docker Desktop 설치 및 실행 과정을 포스팅해 보려고 합니다. 설치 파일 다운로드도커 공식 문서 사이트에서 설치 파일을 받도록 하겠습니다. 화면을 조금 스크롤해서 내용을 읽어보면 WSL2 또는 Hyper-V 기반으로 Docker Desktop을 설치할 수 있다고 설명돼있다.궁금해서 찾아보니 WSL2는 윈도우 내에서 리눅스 커널을 직접 실행하는 방식이라 윈도우와 통합된 가벼운 환경으로의 제공을 의미하며 Windows Home 버전에서도 설치가 가능하다는 특징이 있다. Hyper-V 기반은 윈도우 내에 가상 머신을 설치하고 그 위에 독립적인 운영체제 환경을 이용하는 방법이라 안정적이지만 Wind..

Docker 2025.04.17

@Bean, @Configuration, @ComponentScan, @Import 정리

우리가 애플리케이션을 만들기 위해서는"어떤 클래스의 오브젝트를 만들고 그들을 어떻게 연결할 것인가?"에 대한 정보가 필요하다.이 구성 정보를 스프링에게 전달하는 여러 가지 방법이 있는데,컨테이너 초기화 과정에서 빈을 동적으로 생성하도록 약속된 애노테이션들에 대해 알아보자. Bean을 등록시키는 중요 애노테이션1. @Bean@Configurationpublic class PaymentConfig { @Bean public PaymentService paymentService() { return new PaymentService(); }}@Bean 애노테이션이 붙어있는 메소드는 'Bean을 만드는 메소드'를 의미한다. 쉽게 return 되는 객체가 빈으로 등록된다고 이해하면 된다..

Spring 2025.03.19

Spring Batch와 직렬화 엑세스(ORA-08177) 오류 원인 및 해결

SQLException: ORA-08177: can't serialize access for this transactionSpring Batch 설정 중 '이 트랜잭션에 대한 직렬화 액세스를 할 수 없습니다.'는 에러가 발생했다. 결론부터 말하자면, 현재 애플리케이션의 트랜잭션 격리 수준이 직렬화(Serializable)로 설정되어 있는데, 이 규칙을 지키지 못해 발생한 에러이다. 여기서 '격리 수준'이란 트랜잭션 간의 동시성 문제를 해결하기 위한 규칙을 의미한다. 그중 Serializable 옵션은 한 트랜잭션이 특정 데이터를 읽는 동안, 다른 트랜잭션이 동일한 데이터에 접근/수정하는 것을 막기 위해 그 데이터에 잠금을 걸어 동시 접근을 방지한다. 따라서, 모든 트랜잭션이 마치 직렬로 실행되는 것처럼 ..

Spring 2024.12.14

[Spring Batch] ORA-00955 에러 해결하기

Spring Batch의 초기 구성을 설정하는 과정에서 여러 오류가 발생할 수 있다.이전 글에 이어 발생할 수 있는 ORA-0085 에러에 대해 알아보자. SQLSyntaxErrorException: ORA-00955: 기존의 객체가 이름을 사용하고 있습니다.Caused by: org.springframework.jdbc.datasource.init.ScriptStatementFailedException: Failed to execute SQL script statement #1 of class path resource [org/springframework/batch/core/schema-oracle10g.sql]: CREATE TABLE BATCH_JOB_INSTANCE ( JOB_INSTANCE_ID..

Spring 2024.12.12

[Spring Batch] Table "BATCH_JOB_INSTANCE" not found

Batch 프로젝트의 초기 Config를 구성하는 과정에서 로컬과 개발 서버에서는 정상적으로 동작하는데,이상하게 운영 서버에서 실행하면 에러가 발생했다.해결하는 과정에서 여러 에러를 마주쳤는데, 최대한 상기하며 정리해보겠습니다. BadSqlGrammarException [SELECT JOB_INSTANCE_ID, JOB_NAME from BATCH_JOB_INSTANCE where JOB_NAME = ? and JOB_KEY = ?]운영에 배포하기 전에 개발서버에서 정상 동작하는 것을 확인했었다. 그리고 에러 로그도 SQL Exception 관련 문제라고 말하지만 문제가 되는 테이블은 Spring Batch에서 관리하는 메타 테이블이기 때문에 mapper 쪽을 잘못 작성해서 발생한 문제는 아니다. 어쨌든..

Spring 2024.11.20

의존성 역전 원칙(DIP)과 인터페이스 소유권의 역전

'의존성 역전 원칙(DIP)'은 '의존성 주입'의 약자인 DI(Dependency Injection)와 비슷하게 생겼기에 유사한 개념이라고 혼동할 수 있다.연관이 아예 없는 것은 아니지만 어쨌든 ' SOLID'라고 객체지향 설계 원칙에서 제일 마지막에 등장하는 원칙인 'Dependency Inversion Principle' 과 이로 인해 생각해 볼 Spring Web MVC 구조에 대해서도 정리해 봤다. 의존성 역전 원칙(Dependency Inversion Principle) 이란?DIP의 정의는 아래와 같다. 이해하기 힘든 문장들을 코드와 함께 하나하나 파헤쳐 보자."상위 수준 모듈은 하위 수준 모듈에 의존해서는 안 된다. 둘 모두 추상화에 의존해야 한다. 또한, 추상화는 구체적인 사항에 의존해서는..

Spring 2024.11.17

Spring Boot(스프링부트) 핵심 특징과 Spring과의 관계

Spring Boot와 Spring의 관계Springboot(스프링부트)라는 단어를 처음 마주하면 그래서 Spring Framework와 다른 거야? 다르다면 어떻게 다른 건데?라는 궁금증이 생긴다. 굳이 구분을 짓자면 이름에서도 알 수 있듯이 Springboot는 Spring과 별개이다. 그래서 Spring의 버전과 Springboot의 버전을 말할 일이 있다면 잘 주의해서 말해야 한다. 하지만 그렇다고 Springboot가 Spring을 대체하거나 승계하여 나온 새로운 기술도 아니다. 결론부터 말하자면, Springboot는 Spring Framework를 더 쉽게 사용하도록 돕는 도구들의 모음이다. 즉, Springboot는 Spring을 효과적으로 사용하는 방법에 대한 강한 의견이 반영된 프레임워..

Spring 2024.10.30

Method invocation may produce NullPointerException 과 Optional 활용

IDE에서 "Method invocation may produce NullPointerException" 경고 메시지를 발견했다. 왜 이런 Warning이 표시되는가?Method invocation '~~~' may produce NullPointerException 경고를 해석해 보면 메서드 호출 시 NullPointerException이 발생할 수 있다는 것을 의미한다.저의 경우엔 getString() 메서드를 호출할 때 paramters 객체가 null일 수도 있다는 말인데.. 사실 위 코드는 Spring에서 제공하는 인터페이스를 활용하는 거라 JobParameters가 null일 수가 없는 코드이기는 했다. IDE가 이런 메시지를 나타내는게 이해가 안 되긴 하지만, 좀 생각해 보니 getStrin..

Java 2024.10.11