DEV

· DEV
2023-50W 대노스터디 알고리즘 Baekjoon_16234 Baekjoon_15683 Baekjoon_2573 CS CS 질문 Repo @노수지의 질문 Service && Component의 차이점 Service와 Component는 모두 Spring 프레임워크에서 사용되는 어노테이션입니다. Service는 비즈니스 로직을 처리하는 서비스 계층을 나타내며, Component는 일반적인 컴포넌트로 사용됩니다. Service는 Component의 특수한 형태로 볼 수 있습니다. Bean의 생명 주기 Bean의 생명 주기는 인스턴스화, 의존성 주입, 초기화, 사용, 그리고 소멸 단계를 포함합니다. Spring Container는 이러한 생명 주기를 관리합니다. 트랜잭션(Transaction)이란 트랜잭션은..
· DEV/Backend
Intro. Restdocs를 떠나다 🐥 카카오 테크 캠퍼스 - 2단계 6주차 마지막 과제는 API 문서를 작성하는 것이다. Restdocs로 예시를 들어주셔서 일단 구현은 했는데, Swagger의 UI와 테스트를 할 수 있다는 점이 맘에 들었기 때문이다 그래서 둘 다 만들어 제출하기로 했다! 재밌잖아! Contents 1. 기본 구성 Swagger 의존성을 먼저 설정합니다 implementation 'io.springfox:springfox-boot-starter:3.0.0' 다음은 application.yml 설정합니다. application.yml에 아래 코드를 빼먹으면 bean을 받지 못해서 프로젝트가 터집니다… ChatGPT로 에러 해결 - Failed to start bean ‘document..
· DEV/Backend
Intro. 무슨 일이지…? 갑자기 Swagger 사용하는 방법 쓰면서 Swagger를 만들고 있었는데 에러가 발생했다 아직 별도의 세팅을 하지 않았는데 에러가 떠서 좀 당황 스러웠다 해결 방안 문제 파악 일단 로그를 봐보자. 프로젝트 부팅 과정에서 Warning이 떴다. 그리고, 내려가면 Null Exception이 뜬다 마지막 프로젝트 실행 이후 달라진 점은 새로운 의존성(Swagger)를 추가했다는거라 설정 파일에서, Swagger 부분을 긁어서 🚀 Chat GPT에게 한 번 물어본다 내가 예상한 문제가 정답이라고 알려준다 해결 방안 GPT에게 최신 정보가 없는거 같아, 구글링을 했다 구글링해보니 spring.mvc.pathmatch.matching-strategy=ant_path_matcher를 ..
· DEV/Backend
문제 상황 🐥 카카오 테크 캠퍼스 - 2단계 5주차 과제 수행 중에 global Exception Handler를 사용하는 과제가 있었다 code를 작성하면서, 직접 에러를 확인하고 싶어서, 아래와 같이 핸들러를 작성하고 실행했다 @ControllerAdvice public class GlobalExceptionHandler { @ExceptionHandler(Exception500.class) public ResponseEntity serverError(Exception500 e){ return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("잘 찾아왔다."); } } Controller 코드 : runtime Error를 예시로 삼았다 @..
· DEV/Java
DI (Dependency Injection, 의존성 주입) DI(Dependency Injection, 의존성 주입)는 IoC(Inversion of Control, 제어의 역전)의 구현 방법 중 하나입니다. 즉, IoC가 객체의 생성과 생명주기 관리를 프레임워크가 담당하는 전반적인 개념이라면, DI는 그 개념을 실제로 구현하는 방식 중 하나입니다. DI의 주요 개념 의존성 객체지향 프로그래밍에서 한 클래스가 다른 클래스에 의존하게 되는 경우 예를 들어, 클래스 A가 클래스 B의 메소드를 사용한다면, 클래스 A는 클래스 B에 의존하게 됩니다. 주입: 의존성 주입이란, 객체가 자신이 의존하는 객체를 직접 생성하거나 찾는 대신에 외부 시스템(즉, 프레임워크 또는 IoC 컨테이너)에서 생성된 것을 제공(주입..
· DEV/Java
Intro. 난, 손 발 달린 감자인가…? 🐥 카카오 테크 캠퍼스 - 2단계 4주차 과제 분석을 하고 과제를 수행하던 중, 컨트롤러 테스트에서 문제를 직면했다 "음흠, Product Controller에서 fakestore를 사용하니, MockBean을 만들어줘야지 그럼그럼"하면서 개발을 하고 있었는데 말이다, 분명히 데이터를 넣고, Request 내용을 출력했을 때 분명히 데이터가 출력이 되는데, 테스트 실행 결과에 response가 비어있다 기능 명세에 따르면 분명히, Request와 동일하게 데이터가 나와야 하는데 나오지 않는 것이다, 삽질 Get 요청에 Content 담아 전송 ResultActions result = mvc.perform( MockMvcRequestBuilders .get("/p..
· DEV/Java
Intro. 사건의 전말 🐥 카카오테크캠퍼스 - 2단계 3주차 과제 구현 피드백이 도착했다는 알림에 후다닥 달려갔다 3주차 과제는 Repository Test가 핵심이라, 관련 피드백이 달렸다 처음 멘토님의 피드백을 읽고, 잘이해가 되지 않았다 문제의 코드 나름 피드백은 반영하려 했지만, 멘토님이 원한 방향이 아닌거 같아 다시금 질문을 드렸다 결론 일반적으로 PK로 사용되는 Id는 자동 증가를 사용하는 경우가 있어, 테스트시에 변경 될 여지가 있다 핵심은 유니크하게 데이터를 구분하여, 변경의 위험을 탈출하라 전역 변수 테스트할때 아이디를 활용하여 조회하는 경우 ID는 자동증가를 사용하기 때문에 내가 원하는 아이디가 나오지 않아서 테스트가 실패할 수도 있습니다. 예를 들어 유저정보를 @BeforeEach ..
· DEV/Java
@Transactional 어노테이션은 Spring에서 데이터베이스 트랜잭션의 범위를 정의하기 위해 사용됩니다 이 어노테이션은 메서드(또는 클래스)를 트랜잭션 내에서 실행되도록 표시합니다. @Transactional 어노테이션은 클래스 수준, 메서드 수준 또는 둘 다에 적용할 수 있습니다. 클래스 수준에 적용하면 해당 클래스 내의 모든 메서드에 대한 기본 트랜잭션 동작이 설정됩니다. 트랜잭션 전파 트랜잭션 전파는 한 메서드에서 다른 메서드를 호출할 때 트랜잭션 동작이 어떻게 전파되는지를 정의합니다. 스프링은 @Transactional 어노테이션의 propagation 속성을 통해 다양한 전파 유형을 지원합니다. 일반적인 전파 유형은 다음과 같습니다: REQUIRED 메서드는 트랜잭션 내에서 실행되어야 합..
· DEV/Java
A - Atomicity Spring Boot에서, [[@Transactional]] 어노테이션을 사용하여 메서드의 원자성을 보장할 수 있습니다. 이 어노테이션은 메서드에서 발생하는 모든 데이터베이스 연산이 하나의 트랜잭션으로 처리되도록 합니다. 만약 메서드 내에서 어떤 예외가 발생하면, 해당 트랜잭션의 모든 연산은 롤백됩니다. @Service public class UserService { @Autowired private UserRepository userRepository; @Transactional public void updateUserEmail(Long id, String newEmail) { User user = userRepository.findById(id).orElseThrow(() -..
· DEV/Java
서비스와 리포지토리 계층 책임의 차이점 서비스 계층과 리포지토리 계층의 주요 차이점은 다음과 같은 책임입니다. 서비스 레이어 비즈니스 로직을 구현 리포지토리 레이어와 상호 작용하여 데이터를 검색 및 저장 트랜잭션을 관리 리포지토리 레이어 데이터 액세스 및 저장 엔터티에 대한 CRUD 작업을 수행 데이터베이스와 상호 작용 서비스 계층은 비즈니스 규칙 및 작업 실행에 중점을 두는 반면 리포지토리 계층은 데이터 지속성과 관련됩니다. 1 단계: 컨트롤러 계층에서 요청 받기 먼저 서비스 계층은 컨트롤러 계층에서 요청을 받습니다. 요청에는 컨트롤러가 클라이언트로부터 수신하고 검증한 데이터가 포함될 수 있습니다. @Service public class UserService { @Autowired private Use..
berom
'DEV' 카테고리의 글 목록 (4 Page)