Spring 14

예외처리 - Exception Handle

1. 예외처리를 해야하는 이유 스프링을 활용한 프로젝트를 할 때 가장 신경써야 하는 것 중에 하나가 바로 예외처리이다. 예외란 사용자의 잘못된 조작이나 개발자의 코딩 로직의 실수로 인해 발생하는 프로그램 오류를 뜻한다. 예외가 발생해서 프로그램이 종료되면 실제 상용화되어 운영중인 서비스라면 이는 엄청한 피해를 야기할 수도 있다. 적절한 예외처리를 통해서 어떠한 상황에서도 프로그램이 중단되는 일 없이 서비스 되도록 해야한다. 2. 예외를 처리해야 하는 상황 위의 코드를 보면 TripId를 통해 여행 Entity의 내용을 수정하는 서비스 로직이다. 파라미터로 TripId와 수정요청DTO를 받는다. 로직의 첫번째는 파라미터로 전달받은 수정요청DTO를 validation 한다. 그 이후에는 Spring Data..

Spring 2023.10.28

[SpringBoot] BindException 해결법

BindException 가끔 톰캣 서버를 실행해도 실행이 되지 않으면서 BindException이라는 에러 메시지가 뜨는 경우가 있다. 이 경우 1099포트가 이미 사용중이라는 메시지가 함께 표시되는데, 톰캣 웹서버 실행에 필요한 JMX 포트가 1099인 것으로 미루어보아, 톰캣이 1099 포트에서 프로세스가 정상적으로 종료되지 않은 것 같아서 재실행할때, 1099포트가 이미 사용중이라는 메시지가 뜨는 것 같다. 해결법 구글링을 해 본 결과 터미널에서 1099포트의 프로세스를 강제로 kill 해주면 된다고 한다. sudo lsof -i : 위 명령어로 해당 포트 번호로 사용중인 프로세스를 확인할 수 있다. kill -9 그리고 위 명령어로 해당 프로세스를 kill 할 수 있다. 14636이라는 PID로..

Spring 2023.08.26

MySQL 테이블 생성 및 스프링 db 연동

1. MySQL 워크벤치를 사용하여 스키마 및 테이블 생성 MySQL 워크벤치에 접속해서, 루트 계정으로 접속한다음 Library라는 스키마를 만들고 고객 테이블을 생성해준다. 그리고 Spring과 연동할 커넥션에서 이 스키마를 기본 스키마로 사용하면 된다. 테이블을 만들 때 요구사항에 보면 고객번호는 100000번에서 1씩 증가해야 하므로, 자동증가에 체크를 반드시 해주어야 한다. 그리고 중요한게 스프링과 연결할 계정이 루트 계정이 아니라면 방금 만든 테이블에 대한 권한을 모두 줘야한다. 그렇지 않으면 커넥션이 불가능하다. 만든 Library에 대한 모든 권한을 chadongmin 계정에 주었다면, 새로운 커넥션을 만들 수 있다. 즉 chadongmin 계정으로 방금 만든 Library 스키마를 기본 ..

Spring 2023.08.24

[Spring] Bean의 개념과 동작원리, Annotation

자바에서 유지보수하기 편리한 소스코드는 분리가 잘 되어 있어야 한다. 1. 관심사의 분리 2. 변하는 것과 변하지 않는 것의 분리 3. 중복코드 위 세가지가 잘 분리 된 소스코드가 좋은 소스코드이다. 왼 쪽 사진의 윗 부분의 소스코드를 아랫부분으로 수정하면 수정해야 할 부분이 한 곳으로 줄어든다. 하지만 오른쪽 코드처럼 객체를 생성해서 인스턴스를 주입하는 메서드를 따로 만들어서 객체를 주입하면 더욱 변경에 용이한 소스코드가 된다. 객체를 주입하는 메서드를 정의한 모습이다. Map과 비슷하게 key value가 String으로 정의되어 있는 자료구조이다. config.txt에 =구분자로 구분 된 key와 value를 읽어 들인다. 그리고 key에 맞는 value의 타입의 클래스 인스턴스를 생성해서 반환한다..

Spring 2023.07.27