[IntelliJ 오류] Web server failed to start. Port 8080 was already in use.
Back-End/기타2024. 3. 2. 06:15[IntelliJ 오류] Web server failed to start. Port 8080 was already in use.

Mac에서 서버가 가동중인 상태로 프로젝트를 닫아버려서 Web server failed to start. Port 8080 was already in use. 오류가 발생하였다. 8080 포트가 이미 실행중인데 다시 이 포트를 사용하려고 하니 포트 충돌로 인한 오류로 보여진다. 해결 방법은 간단하다. 터미널을 열고 아래의 명령어를 입력한다. sudo lsof -i :8080 위 명령어를 입력하면 아래와 같은 메시지가 출력된다. PID라는 항목이 중요하다. PID 9894가 8080포트를 사용중인 것이다. 따라서 아래의 명령어로 8080포트를 사용중인 프로세스를 강제로 종료시킨다. kill -9 PID번호

[Spring DB] 트랜잭션 AOP
Back-End/Spring2024. 3. 2. 00:39[Spring DB] 트랜잭션 AOP

이 글은 인프런 김영한님의 Spring 강의를 바탕으로 개인적인 정리를 위해 작성한 글입니다. 트랜잭션 AOP(Aspect-Oriented Programming)는 스프링 프레임워크가 트랜잭션 관리를 위해 제공하는 선언적 트랜잭션 관리 방식이다. 이 방법을 통해 개발자는 비즈니스 로직과 트랜잭션 관리 코드를 분리할 수 있으며, 이로 인해 코드의 가독성과 유지보수성이 크게 향상된다. 스프링에서는 @Transactional 어노테이션을 사용하여 클래스나 메소드 레벨에서 트랜잭션을 선언적으로 관리할 수 있게 한다. 트랜잭션 AOP의 특징은 아래와 같다 @Transactional 어노테이션 사용: 개발자는 트랜잭션을 적용하고자 하는 메소드나 클래스에 @Transactional 어노테이션을 붙인다. 이 어노테이션..

[Spring DB] 트랜잭션 템플릿
Back-End/Spring2024. 3. 1. 00:58[Spring DB] 트랜잭션 템플릿

이 글은 인프런 김영한님의 Spring 강의를 바탕으로 개인적인 정리를 위해 작성한 글입니다. 트랜잭션 템플릿(Transaction Template)은 스프링 프레임워크에서 제공하는 프로그래밍 방식(명시적)의 트랜잭션 관리 방법 중 하나이다. TransactionTemplate 클래스를 사용하면 선언적 트랜잭션 관리(@Transactional)와 달리, 코드 내에서 직접 트랜잭션의 시작, 커밋, 롤백을 제어할 수 있다. 이 방식은 트랜잭션 관리를 더 세밀하게 제어할 필요가 있는 복잡한 비즈니스 로직에서 유용하게 사용된다. TransactionTemplate 트랜잭션 템플릿을 적용하려면 템플릿을 제공하는 클래스를 작성해야 하는데, 스프링은 TransactionTemplate 라는 템플릿 클래스를 제공한다...

[Spring DB] 트랜잭션 매니저
Back-End/Spring2024. 2. 29. 00:18[Spring DB] 트랜잭션 매니저

이 글은 인프런 김영한님의 Spring 강의를 바탕으로 개인적인 정리를 위해 작성한 글입니다. 애플리케이션 아키텍처 프레젠테이션 계층, 서비스 계층, 데이터 접근 계층은 소프트웨어 설계에서 흔히 사용되는 3계층 아키텍처의 핵심 요소이다. 이 아키텍처는 애플리케이션을 구조화하고 관리하기 위해 계층을 분리함으로써, 유지보수성, 확장성 및 재사용성을 향상시킨다. 프레젠테이션 계층 프레젠테이션 계층은 사용자 인터페이스와 관련된 부분이다. 이 계층은 사용자의 입력을 받아들이고, 사용자에게 데이터를 시각적으로 표현한다. 웹 애플리케이션에서는 HTML, CSS, JavaScript 등을 사용하여 구현되며, 사용자의 요청을 서비스 계층으로 전달하고 결과를 사용자에게 돌려준다. 프레젠테이션 계층에서 서블릿과 HTTP 같..

[Database] 트랜잭션 락(Lock)
데이터베이스/데이터베이스 이론2024. 2. 28. 00:44[Database] 트랜잭션 락(Lock)

이 글은 인프런 김영한님의 Spring 강의를 바탕으로 개인적인 정리를 위해 작성한 글입니다. 공유 락과 배타락 개념 데이터베이스 락은 동시성 제어를 위해 사용되는 기술이다. 이는 여러 사용자나 애플리케이션이 동시에 데이터베이스에 접근할 때 데이터의 일관성과 무결성을 유지하기 위해 필요하다. 데이터베이스 락에는 크게 두 가지 유형이 있다 공유 락(Shared Lock) 배타 락(Exclusive Lock) 공유 락(Shared Lock) 공유 락은 여러 트랜잭션이 동시에 데이터를 읽을 수 있도록 허용하지만, 해당 데이터에 대한 수정은 허용하지 않는다. 이 락은 데이터의 동시 읽기를 가능하게 하여 성능을 향상시키지만, 동시에 데이터를 변경할 수는 없다. 배타 락(Exclusive Lock) 배타 락은 한 ..

[Database] 트랜잭션 ACID, DB 연결구조와 세션
데이터베이스/데이터베이스 이론2024. 2. 27. 00:59[Database] 트랜잭션 ACID, DB 연결구조와 세션

이 글은 인프런 김영한님의 Spring 강의를 바탕으로 개인적인 정리를 위해 작성한 글입니다. 트랜잭션의 기본적인 내용은 아래의 글을 참고 2023.08.20 - [Java Category/Java] - [Java] DB 트랜잭션 처리 [Java] DB 트랜잭션 처리 이 게시글은 이것이 자바다(저자 : 신용권, 임경균)의 책과 동영상 강의를 참고하여 개인적으로 정리하는 글임을 알립니다. 트랜잭션 트랜잭션(transaction)은 기능 처리의 최소 단위를 말한다. 하 rebugs.tistory.com 트랜잭션 ACID ACID 속성 원자성(Atomicity): 트랜잭션 내의 모든 연산은 전부 완료되거나 전부 실행되지 않아야 한다는 원칙이다. 즉, 트랜잭션의 연산 중 하나라도 실패하면, 이미 실행된 모든 연..

[Spring DB] 커넥션풀과 데이터 소스
Back-End/Spring2024. 2. 26. 00:54[Spring DB] 커넥션풀과 데이터 소스

이 글은 인프런 김영한님의 Spring 강의를 바탕으로 개인적인 정리를 위해 작성한 글입니다. 커넥션 풀 개념 커넥션 풀(Connection Pool)은 데이터베이스와의 연결을 재사용할 수 있도록 관리하는 일련의 데이터베이스 연결 집합이다. 애플리케이션의 성능을 향상시키기 위해 사용되며, 여러 사용자나 클라이언트 요청에 대응하여 데이터베이스 연결을 빠르게 제공하는 역할을 한다. 커넥션 풀을 사용하는 주된 이유는 연결 생성과 해제에 드는 비용이 높기 때문이다. 데이터베이스에 연결을 요청할 때, 커넥션 풀에서 미리 생성해 둔 연결 중 하나를 할당받는다. 사용이 끝난 연결은 다시 커넥션 풀로 반환되어, 다음 요청이 있을 때 재사용된다. 이 방식은 데이터베이스 연결을 매번 새로 생성하고 해제하는 것보다 훨씬 효..

[Spring MVC] PRG(Post/Redirect/Get), RedirectAttributes
Back-End/Spring2024. 2. 25. 00:07[Spring MVC] PRG(Post/Redirect/Get), RedirectAttributes

이 글은 인프런 김영한님의 Spring 강의를 바탕으로 개인적인 정리를 위해 작성한 글입니다. POST, Redirect GET 예를 들어, 상품 등록 폼에서 상품을 저장하고, 상품 상세 페이지로 간다고 가정하면, 아래와 같은 그림이 된다. @GetMapping("/add") //get public String addForm() { return "basic/addForm"; } @PostMapping("/add") //post public String addItem(@ModelAttribute Item item) { itemRepository.save(item); return "basic/item"; } 상품 등록 폼으로 갈때는 GET 요청으로 가고, 상품 저장을 저장하기 위해서는 POST 요청을 해야한..

image