TIL(Today I Learned)
TIL 30th day(2021.11.20)
keepgoing
2021. 11. 20. 00:20
조회한 빈이 모두 필요한 경우📌
- List, Map
- ex) 할인의 종류 rate or fixDiscountPolicy 둘다 필요한경우
실무에서의 자동 그리고 수동📌
- 스프링빈은 많은 기능을 자동으로 지원한다. 이를 적극적으로 활용하는것이 좋다.
- 업무 로직 빈과 기술 지원 빈이 있다.
- 업무 로직 빈에는 '자동'이, 기술 지원 빈에는 '수동'이 유지보수에 유리하다.
- 왜?) 기술 지원은 광범위하게 적용되고 그 수가 적어 오류 사항을 확실하게 찾고 유지보수해야하기 때문
- 반면에, 업무 로직 빈(비즈니스 로직)에서도 '수동' 선언이 좋을 때가 있다.
- ex) '다형성'을 사용할 때,(List, Map) 또는 여러 빈을 사용해야할때
- 왜? ) 다른 사람이 내 코드를 봤을 때 한눈에 이해할 수 있도록하기 위해
- 업무 로직 빈과 기술 지원 빈이 있다.
스프링 빈 생명주기 콜백
- "스프링 컨테이너 생성" -> "빈 생성" -> "의존관계 주입" -> "초기화 콜백" -> "사용" -> "소멸전 콜백" -> "종료"
궁금한점 📌
스프링빈에서 얘기하는 타입의 정확한 의미는?
- java 에서는 primitive type(기본 타입)과 reference type(참조 타입)을 지원한다.
- primitive type은 정수, 실수, 문자, 논리 리터럴을 저장하는 타입
- reference type은 객체의 번지를 참조하는 타입으로, 배열, 열거, 클래스, 인터페이스 타입
- java 에서는 primitive type(기본 타입)과 reference type(참조 타입)을 지원한다.
Map<k,v>에서 key 값에 String이 들어가는 이유는?
- springbean에서 호출할 때 타입을 앞글자가 소문자인 String으로 받아오기 때문에 (ex) discountPolicy)
isInstanceOf의 정확한 의미는?
- ex) assertThat(discountService).isInstanceOf(DiscountService);
- discountService는 DiscountService 타입으로 받을 수 있는지를 묻는것.
- 즉, DiscountService라는 interface안에 discountService 구현체가 있는지 물어보는것.
- ex) assertThat(discountService).isInstanceOf(DiscountService);
rateDiscountPolicy.class에 @Primary annotation을 추가해서 중복 빈 조회 에러를 방지했다.
- fixDiscountPolicy를 선언해줘서 할인가가 1000원으로 고정되게 설정했다.
- RateDiscountPolicy가 @Primary여서 우선원을 갖게되는데, 이때 내가 원하는 결과가 나오지 않을까했다.
- 하지만, 결과는 1000원의 고정된 할인가를 반영했다. 하지만 한번이라도 정률 할인 방식이 적용되면 그건 문제가 되기에
의문이다. 내가 설정한 정액할인가가 모든 케이스에 적용이될까?
- 하지만, 결과는 1000원의 고정된 할인가를 반영했다. 하지만 한번이라도 정률 할인 방식이 적용되면 그건 문제가 되기에
파라미터의 정확한 의미는?
- '매개변수'다. 메서드 변수(?)이다.