분류 전체보기 344

[빈 스코프] 웹 스코프 request 예제 만들기

🧐강의🧐 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 웹 스코프는 웹 환경에서만 동작하기 때문에, 라이브러리를 추가해야 한다 💡웹 환경 구성하기 1. build.gradle 라이브러리 추가 & gradle refresh ... dependencies { implementation 'jakarta.inject:jakarta.inject-api:2.0.1' // JSR-330 Provider ... } ... 2. 애플리케이션 실행 후 브라우저 접속 (localhost:8080) 참고 - 웹 라이브러리 없을 시,..

[빈 스코프] 싱글톤 스코프 빈 & 프로토타입 스코프 빈 조회하기

🧐강의🧐 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 💡싱글톤 스코프 빈 조회하기 ☑️ 스프링 컨테이너 생성 시점에 빈 초기화 메서드 실행 ☑️ 같은 인스턴스 빈 조회 ☑️ 종료 메서드 정상 호출 · test/java/hello.core/scope/SingletonTest public class SingletonTest { @Test void singletonBeanFind() { AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationC..

[빈 스코프] 스코프 종류(싱글톤, 프로토타입, 웹) & 지정 방법

🧐강의🧐 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 스프링 빈은 스프링 컨테이너의 시작부터 종료까지 유지된다 ∵ 스프링 빈 → 싱글톤 스코프 (기본) 스코프 : 빈이 존재할 수 있는 범위 💡스프링이 지원하는 스코프 1. 싱글톤 ✅ 기본 스코프 ✅ 스프링의 시작부터 종료까지 유지되는 가장 넓은 범위의 스코프 ✅ 빈 조회 시, 항상 같은 인스턴스의 스프링 빈 반환 · 싱글톤 빈 요청 시, 동작 방식 2. 프로토타입 ✅ 프로토타입 빈의 생성과 의존 관계 주입까지 스프링 컨테이너가 관여하는 매우 짧은 범위의 스코프..

[빈 생명주기 콜백] 스프링 빈 생명주기 콜백 지원하는 방법 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 생략 가능 (스프링 빈만 해당)..

728x90