분류 전체보기 341

[빈 생명주기 콜백] 스프링 빈 생명주기 콜백 지원하는 방법 3가지 - 인터페이스, 설정 정보, 애노테이션

🧐강의🧐 https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EA%B8%B0%EB%B3%B8%ED%8E%B8/dashboard 애플리케이션 시작 시점에 필요한 연결을 생성하고, 종료 시점에 연결을 모두 종료하는 작업 진행 시, 객체의 초기화와 종료 작업이 필요하다 (ex. 데이터버이스 커넥션 풀, 네트워크 소켓) 인터페이스 : IntializingBean, DisposableBean 설정 정보 : 빈 등록 초기화, 소멸 메서드 (☆이 방법 사용하기!!) 애노테이션 : @PostConstruct, @PreDestroy 🚨문제 상황🚨 · 상황 가정 ☑️ 가상의 외부 네트워크에 연결하는..

[의존 관계 자동 주입] 해당 타입의 스프링 빈 모두 조회 - List & Map

🧐강의🧐 https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EA%B8%B0%EB%B3%B8%ED%8E%B8/dashboard 클라이언트가 할인의 종류 (rate, fix) 를 선택하는 경우 TEST ✅ Map : 모든 DiscountPolicy 주입 (스프링 빈 이름 : DiscountPolicy 타입으로 조회된 스프링 빈) ✅ List : 해당 DiscountPolicy 타입의 모든 스프링 빈 조회 1. Map & List 로 스프링 빈 조회하는 로직 개발 · test/java/hello.core/autowired/AllBeanTest public class AllBeanTes..

[의존 관계 자동 주입] @Qualifer 타입 체크 문제 해결하기 - 애노테이션 직접 생성

🧐강의🧐 https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EA%B8%B0%EB%B3%B8%ED%8E%B8/dashboard 🚨문제 상황🚨 ☑️ @Qualifier 사용 시 컴파일 과정에서 타입 체크 안됨 💡해결 방법💡 ✅ 애노테이션 직접 생성 후 주입하기 1. Annotation 생성 · main/java/hello.core/annotation/MainDiscountPolicy @Target({ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER, ElementType.TYPE, ElementType.ANNOTATION_T..

[의존 관계 자동 주입] 조회할 빈이 2개 이상일 때

🧐강의🧐 https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EA%B8%B0%EB%B3%B8%ED%8E%B8/dashboard @Autowired : 필드명 매칭하기 @Qualifier : 추가 구분자 생성하기 @Primary : 우선 순위 정하기 🚨문제 상황🚨 🐶 @Autowired : 타입(Type)으로 조회 시 대상 빈이 2개 이상일 때 문제 발생 TEST ☑️ RateDiscountPolicy & FixDiscountPolicy 모두 @Component 적용하기 · 기존 코드 : RateDiscountPolicy 에만 적용되어 있는 @Component ... @Compone..

[의존 관계 자동 주입] Lombok 적용하는 방법

🧐강의🧐 https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EA%B8%B0%EB%B3%B8%ED%8E%B8/dashboard 💡IntelliJ 설정 변경하기 · build.gradle 에 Lombok 추가 & gradle refresh ... configurations { compileOnly { extendsFrom annotationProcessor } } dependencies { ... compileOnly 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok' testCompileOnly 'or..

[의존 관계 자동 주입] 자동 주입 대상 옵션으로 처리하기

🧐강의🧐 https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EA%B8%B0%EB%B3%B8%ED%8E%B8/dashboard 🚨 문제 상황 🚨 · 주입할 스프링 빈이 없어도 애플리케이션이 동작해야 하는 상황 · @Autowired 사용 시, 'required' 옵션 기본 값이 'true'로 되어 있어, 자동 주입 대상 없을 시 오류 발생 💡 해결 방법 💡 1️⃣ 호출 방지 : @Autowired(required = false) 2️⃣ null 호출 : @Nullable 3️⃣ Optional.empty 호출 : Optional · test/java/hello.core/aut..

[의존 관계 자동 주입] 생성자 주입 선택하기

🧐강의🧐 https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EA%B8%B0%EB%B3%B8%ED%8E%B8/dashboard 다양한 의존 관계 주입 방법 생성자 주입 수정자 주입 필드 주입 (권장 X) 일반 메서드 주입 항상 생성자 주입 선택 + 필요 시 수정자 주입 선택 1️⃣ 생성자 주입 ☑️ 생성자를 통해 의존 관계 주입하기 · ⭐ 특징 - 생성자 호출 시점에 한 번만 호출 - "불변, 필수" 의존 관계에 사용 - 불변 : 바뀌지 않는 코드 - 필수 : final 변수 → 대응값 존재해야 함 - ⭐ 생성자가 1개만 있으면, @Autowired 생략 가능 (스프링 빈만 해당)..

🩷 좋아요 기능 (추가, 취소) 🩷

Controller → Service → Repository 💟 Controller ☑️ 좋아요 추가 : 좋아요를 누르는 회원 ID & 책 ID 를 담은 데이터 (addLikesCount) 를 기반으로 좋아요를 반영한다 ☑️ 좋아요 취소 : 삭제하려는 Likes 테이블의 id 값을 입력받는다 @RestController @RequestMapping("/book/likes") @RequiredArgsConstructor public class LikesController { private final LikesService likesService; // 좋아요 추가 @PostMapping() public ResponseEntity addLikes(@RequestBody AddLikesCount addLike..

💛 책 반납하기 💛

2023.12.16 - [Spring/[PROJECT] 도서 대여 프로그램] - 💛 책 대출 등록하기 💛 💛 책 대출 등록하기 💛 Controller → Service → Repository 🔖 Controller ☑️ 책의 대출 정보가 담긴 데이터 (addRentDto) 가 들어온다 ☑️ 책이 이미 대출 중인지, 대출 가능한 상태인지 확인한다 (BookStatus) ☑️ 대출이 가능하면 alsrudalsrudalsrud.tistory.com 📗 Controller ☑️ 반납하고자 하는 책의 ID 를 입력받는다 ☑️ Rent 테이블에서 삭제하는 service 메서드를 호출한다 (deleteRent) ... public class RentController { private final RentService..

💛 대출한 책 조회하기 💛

책 대출하기 2023.12.16 - [Spring/[PROJECT] 도서 대여 프로그램] - 💛 책 대출 등록하기 💛 💛 책 대출 등록하기 💛 Controller → Service → Repository 🔖 Controller ☑️ 책의 대출 정보가 담긴 데이터 (addRentDto) 가 들어온다 ☑️ 책이 이미 대출 중인지, 대출 가능한 상태인지 확인한다 (BookStatus) ☑️ 대출이 가능하면 alsrudalsrudalsrud.tistory.com 📕 Controller ☑️ 요청이 오면, DB 에 저장되어 있는 책 대출 목록을 반환한다 - service 메서드 호출 (getAllRent) ... public class RentController { private final RentService ..

728x90