Spring

Spring/Spring Boot

[DB / Spring ] @Transactional 세부 설정 - 격리 수준 / 전파 수준 설정

스프링 부트에서는 @Transactional 어노테이션을 이용하여 복잡한 트랜잭션 처리를 단순화한다. 클래스, 메서드 단위로 어노테이션을 추가할 수 있고, 스프링이 AOP를 통해 프락시를 도입하여 트랜잭션 처리를 모두 해결해 준다. @Transactional 세부 설정 트랜잭션의 세부 설정을 통해 상황별로 적절한 설정을 하여 성능을 최적화할 수 있다. @Transactional 세부 설정 종류 Isolation (격리 수준 설정) Propagation(전파 수준 설정) readOnly 속성 트랜잭션 롤백 예외 설정 time-out 설정 1. Isolation(격리 수준) 일관성이 깨지는 것을 어느 정도까지 허용하느냐에 대한 설정이다. 기본 설정은 DEFAULT이다. @Transactional(isolat..

Database/데이터 접근 기술

[Java, Spring] 트랜잭션을 적용하는 여러 가지 방법

[JDBC] 트랜잭션 적용 - Connection 직접 이용 JDBC 코드를 직접 짤 때 트랜잭션을 이용하는 방법이다. 비즈니스 로직을 실행할 때, 하나의 커넥션 내에서 동작해야 하므로 메서드 사용 시 connection을 파라미터로 넘겨야 한다. 따라서 서비스 계층, 데이터접근 계층에 모두 Connection을 파라미터로 받아서 이용해야 한다. public void loadLotsOfData(DataList dataList) { String sql = "insert into table values ( /* ... */)"; Connection conn = null; PreparedStatement pstmt = null; try { conn = getConnection(); pstmt = conn.pr..

기타/Tech Interview

백엔드 개발자 면접 질문 모음 (답변 없음)

이번 게시글은 면접 예상 질문과 저라면 어떻게 대답할지에 대해 적어봤습니다. 각자 아래 질문에 어떻게 대답할지 생각해 보시면 좋을 것 같습니다. "접은 글"로 제 기준 대답 키워드를 적어놨는데, 피드백이나 의견 댓글로 남겨주시면 감사하겠습니다, [기술 관련] 💡 Java/Spring Boot/JPA를 활용한 REST API 서버 개발 경험 ⬇️키워드 더보기 REST 방식으로 URL로 자원 명시, HTTP Method로 처리 방법을 지정 SpringBoot의 Spring MVC 구조, 레이어드 아키텍처 이용 Controller 단에서 클라이언트 요청 처리 Service 단에서 비즈니스 로직 처리 데이터 접근 계층은 Spring data JPA를 이용하여 JpaRespository 인터페이스를 사용 💡 RD..

Spring/Spring Boot

[Spring] 빈 스코프 (Bean Scope) / 싱글톤, 프로토타입 등

빈 스코프란? 스프링 빈은 기본적으로 싱글톤으로 관리된다. 그래서 스프링 컨테이너는 스프링 싱글톤 컨테이너라고 불리기도 한다. 그러나 이것은 스프링 빈이 기본적으로 싱글톤 스코프로 생성되기 때문이다. "스코프"는 빈이 존재할 수 있는 범위를 뜻한다. 한마디로 빈 스코프는 빈이 존재할 수 있는 범위 또는 빈의 라이프사이클의 범위라고 생각할 수 있을 것 같다. 스프링은 아래와 같이 다양한 빈 스코프를 지원한다. 싱글톤 : default, 스프링 컨테이너의 시작부터 종료까지 유지되는 가장 넓은 범위의 스코프 프로토타입 : 스프링 컨테이너는 빈의 생성과 의존성 주입까지만 관여하고, 더 이상 관리하지 않는 짧은 범위의 스코프 웹 관련 스코프 : request, session, application 등 여러 스코프..

Spring/Spring Boot

[Spring] 빈 생명 주기 콜백 (Bean LifeCycle) @PostConstruct / @PreDestroy

Spring Bean LifeCycle Spring DI 컨테이너는 Bean으로 등록된 객체의 생명주기 관리를 위임받아서 관리하고, 객체가 필요한 곳에서 이 Bean을 의존성 주입받아서 사용할 수 있다. 스프링 컨테이너가 생성될 때 객체(Bean)를 생성하고 의존성을 주입하는데, 의존관계 주입 후 Bean을 초기화하고, 스프링 컨테이너를 종료하기 전에 객체를 소멸시켜야 한다. 객체의 생성과 초기화 분리 객체를 초기화 한다는 것은, 객체 생성 이외에 외부 커넥션을 연결하거나, 초기값을 등록하는 등의 여러 작업을 말한다. 이 과정을 생성자에서 진행해도 되지만, 객체 생성에 비해 초기화는 비교적 무거운 일을 수행하기 때문에 객체를 생성하는 부분과 초기화하는 부분을 명확하게 나누는 것이 좋다. 빈 생명주기 스프..

Spring/Spring Boot

[Spring] 의존성 주입 방법 (DI : Dependency Injection), 생성자 주입 / 필드 주입 / setter 주입, 생성자 주입을 사용하는 이유

DI : Dependency Injection (의존성 주입) 의존성 주입은 객체 간의 의존성을 줄이고 유지보수성을 높이기 위해 사용된다. Spring 컨테이너에 여러 컴포넌트를 Bean으로 등록하여 생명주기 관리를 위임하고, 이 Bean으로 등록한 객체를 주입받아서 사용할 수 있다. DI 덕분에 개발자가 객체 생성에 대한 부분을 신경 쓰지 않고 비즈니스 로직에만 집중할 수 있게 된다. 의존성 주입 방법 의존성 주입 방법은 4가지가 있다. 생성자 주입 Setter 주입 Field 주입 일반 메서드 주입 이 중, 생성자 주입을 가장 많이 사용하고 Spring에서 권장하는 방법이다. 생성자 주입 생성자를 통해 의존성을 주입하는 방법이다. 생성자 호출 시점에 딱 한 번만 호출되는 것이 보장된다. 불변, 필수 ..

기타/Tech Interview

백엔드 개발자 기술 면접 정리 - Spring, JPA

Spring 웹 개발 관련 질문 모음입니다. 자세한 내용은 추가로 검색을 해보셔서, 본인의 언어로 정리하시길 추천드립니다. 이 글 역시 제 생각과 언어에 맞게 정리하였고, 틀린 부분이 있을 수 있으니 댓글로 지적해 주시면 감사하겠습니다! [ Spring ] 💡IoC(Inversion of Control) 란? ⬇️Answer 더보기 제어의 역전 IoC는 객체의 생성과 관리를 스프링 프레임워크가 대신하도록 위임 스프링 컨테이너에 Bean을 미리 등록하고, 필요한 곳에서 컨테이너에서 빈을 가져와 사용할 수 있게 됩니다. 이때, Bean을 가져올 때 의존성 주입(DI) 방식을 사용하여 객체 간의 의존성을 자동으로 주입받을 수 있게 됩니다. 💡DI (Dependency Injection) 란? ⬇️Answer ..

Computer Science/프로그래밍 이론

[Computer Science/디자인 패턴] 전략 패턴(strategy pattern)

전략 패턴(strategy pattern) 전략 패턴은 정책 패턴(policy pattern)이라고도 하며, 객체의 행위를 바꾸고 싶은 경우에 직접 수정하지 않고 "전략"이라고 부르는 "캡슐화된 알고리즘"을 컨텍스트 안에서 바꿔주면서 상호 교체가 가능하게 만드는 패턴이다. 비즈니스 로직을 인터페이스로 만들고, 해당 인터페이스를 구현한 클래스를 사용하도록 만드는 것이라고 생각하면 된다. 우선 Java 코드를 이용한 기본 예제로 알아보고, 추가로 Spring에서 어떻게 전략 패턴을 사용하는지 알아보자. Java 기본 예제 예제로 알아보자. interface : Payment public interface Payment { void pay(int amount); } 구현체 1 : KakaoCardPayment..

HSRyuuu
'Spring' 태그의 글 목록