Spring

Spring

[Spring] Java 예외(Exception) 처리 전략

목표안정성있고 유연한 예외처리를 가진 애플리케이션 설계 방법에 대한 방법을 고민하고 정리한다. 예외(Exception)Java에서 예외는 비정상적인 상황을 나타내는 객체이며, 다음과 같이 Throwable 클래스 하위의 다음 두가지로 나뉜다. Checked Exception컴파일 시점에 처리를 강제하는 예외이다.만약 해당 예외에 대해 try-catch, throws로 처리되어 있지 않다면 컴파일 시점에 에러가 발생한다.반드시 예외처리를 해야하며, 개발자에게 안정성을 강제한다. Unchecked Exception런타임 시점에 발생하는 예외이다.컴파일러가 예외처리를 강제하지 않기때문에, 예외처리를 강제하지 않아도 된다.컴파일 시점에는 에러가 발생하지 않으나, 런타임 시점에 해당 예외처리가 되어있지 않다면 에..

Spring

[Spring] 카카오 로그인 REST API 방식 적용 및 구현

카카오 로그인 공식 레퍼런스를 참고하여 작성https://developers.kakao.com/docs/latest/ko/kakaologin/common Kakao Developers카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다.developers.kakao.com  프로젝트 코드 Githubhttps://github.com/kwj2435/kakao-restapi-login 기술 스택Java 17Spring Boot 3.x.xThymeleafOpenFeign 1. 카카오 개발자 센터 세팅개발을 시작하기전, 카카오에서 제공하는 Rest API 방식의 로그인 시퀀스 다이어그램을 살펴보자.1. 사용자는 카카오 로그인을..

Spring

[Spring] 스프링 부트(Spring Boot) - H2 DB 연동하여 사용하기(with.JPA)

H2 DB란?https://www.h2database.com/ H2 Database는 Java로 구현된 경량형 RDBMS이다.Server, Embedded, In-Memory 3가지 Mode를 제공하며, 간단한 설정으로 빠르게 실행할 수 있어 로컬 개발 환경에서 많이 사용된다. 별도의 DB툴이 없이도 웹 브라우저를 통해 데이터베이스를 시각적으로 관리할 수 있는 인터페이스를 제공하며, 표준 JDBC 드라이버를 제공하여 Java 애플리케이션과 쉽게 연결이 가능하다.H2 데이터 베이스 하나만으로도 여러 다른 데이터베이스(MySQL, PostgreSQL)와 유사한 SQL 문법을 사용할 수 있도록 지원한다.Spring Boot와 연동하기1. Spring 프로젝트 초기 생성시 Spring Initializr를 통해..

Spring

[Spring] Junit 테스트시 Atomikos 커넥션풀의 Connection Name 중복 오류

문제 발생‘어느날 갑자기’ Jenkins 배포중 빌드가 실패, Jenkins 실패 원인을 보니 테스트가 깨지고 있었음현상 재현을 위해 로컬에서 테스트를 돌렸으나 모든 테스트는 PassJenkins의 간헐적 이슈 인가 싶어 다시 Jenkins 빌드를 진행하니 성공후 정상 배포되었음(이때까지만 해도 Jenkins의 버그로 인한 단순 해프닝으로 생각)2주뒤 다시 정기배포일자가 다가왔고, 배포를 진행했으나 이전과 동일하게 다시 Jenkins 빌드가 실패함로컬에서도 마찬가지로 테스트가 깨지고 있었고 로그에서는 아래와 같이 Atomikos 에러가 출력 수 차례 재시도 하니 정상적으로 배포됨...나를 더욱 헷갈리게 하는 상황들Jenkins 배포시에도 매번 실패하는 것이 아닌 여러번 시도하면 그 중 한번은 성공함로컬에..

Spring

IntelliJ에서 Spring MVC 세팅하기

인텔리제이의 Add Framewrok Support를 이용해서 Spring MVC 설정하는 방법이 대부분이지만, Add Framework Support 기능이 정상 동작하지 않는 다수의 케이스를 위해 작성 Spring MVC 설정및 동작을 위한 최소한의 설정만 작성1. 프로젝트 생성 Maven Archetype 으로 새로운 프로젝트를 생성Archetype -> maven-archetypoe-webapp 설정 2. pom.xml 설정Maven Archetype으로 프로젝트를 생성하면, Spring 세팅이 되어 있지 않은 깡통 프로젝트이기 때문에 Spring MVC Dependency를 추가해줘야 한다. pom.xml에 Spring Web MVC Dependency 추가- Maven Repository 에서..

Spring

[Spring] Spring Boot 3 마이그레이션 시작하기

1. 이슈 사항2023년 11월 24일부로 Spring Boot 2.7.x 버전대의 지원이 종료를 끝으로 Spring Boot 2의 모든 지원 종료OSS 지원 종료에 따른 여러 불이익 발생으로 한샘 내에서도 기존 사용중인 Spring Boot 2의 버전업이 필요2. Spring Boot 2 지원 종료에 따른 영향start.spring.io 이용한 2.x 프로젝트 생성 불가패치/보안 업데이트 부족으로 인한 리스크 발생신규 라이브러리 추가시 호환성 문제 발생 가능성3. Spring Boot 3 변경 사항최소 JDK 버전 요구사항 - JDK 17 이상최소 Gradle 버전 요구 사항 - Gradle 7.5 이상최소 Maven 버전 요구 사항 - Maven 3.6.3 이상최소 Hibernate 버전 요구 사항 ..

Spring

[JPA] 일대다(1:N), 다대일(N:1) 관계

JPA의 일대다, 다대일 관계에 대해 알아보자. 일대다(1:N) 데이터베이스에서 일대다 관계는 굉장히 다양한 경우에 적용될 수 있다. 예를 들어, 장바구니와 담긴 상품, 교실과 학생, 게시판과 게시글 등이 있다. 이런 관계를 구현하기 위해 @OneToMany 어노테이션을 이용하여 다음과 같이 구현할 수 있다. 다음은 주문과 상품의 관계에 대한 일대다 양방향 관계를 나타낸 코드이다. @Entity public class Order { // ... @OneToMany(mappedBy = "order") private List products = new ArrayList(); // ... } @Entity public class Product { // ... @ManyToOne @JoinColumn(name ..

Spring

[JPA] 연관관계의 주인

JPA를 사용하며 알아야할 개념중 '연관관계의 주인'에 대해서 살펴보자. 연관관계의 주인이란? JPA에서 연관관계의 주인은 엔티티 간의 양방향 연관관계를 관리하는데 중요한 역할을 하는 개념이다. 양방향 연관관계란 두 개의 엔티티 클래스가 서로를 참조하고 있는 상태를 의미한다. 연관관계의 주인은 일반적으로 두 개의 연관관계 테이블중 외래키를 가지고 있는 테이블에 해당하는 엔티티가 연관관계의 주인이 된다. 연관관계의 주인을 엔티티간의 관계를 주도하고 관리하게 된다. 주인 엔티티의 필드를 사용하여 연관관계 간의 관계를 매핑하며, 이 필드는 데이터베이스 테이블에 반영된다. 더불어 연관관계의 주인이 아닌 엔티티는 읽기 전용(Read-Only) 엔티티로 사용되게 된다. 주인 엔티티가 데이터베이스에 영향을 미치기 때..

turtleDev
'Spring' 카테고리의 글 목록