본문 바로가기

Learning-log126

(스프링 핵심 원리 - 기본편) 9-(6) request 스코프 예제 만들기 9-(7) 스코프와 Provider (8) 스코프와 프록시 - request 스코프 예제 만들기 gradle에 implement 하기 동시에 여러 HTTP요청이 오면 정확이 어떤 요청이 남긴 로그인지 구분하기 어려움 이럴 때 사용하기 좋은 것이 request 스코프 로그가 남도록 request 스코프를 활용해서 추가기능 개발하기 UUID를 사용해서 HTTP요청 구분해볼것 - 스코프와 Provider 코드보기 package hello.core.common; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Component; import javax.annotation.PostConstruct; import javax.annotation.PreDestro.. 2023. 4. 14.
(스프링 핵심 원리 - 기본편) 9-(3) 프로토타입 스코프- 싱글톤 빈과 함께 사용시 문제점 9-(4) 프로토타입 스코프 - Provider로 해결 (5) 웹 스코프 - 프로토타입 스코프 : 싱글톤 빈과 함께 사용시 문제점 스프링 컨테이너에 프로토 타입 빈을 요청하는 예제 클라이언트A addCount() -> 0에서 1로 클라이언트B addCount() -> 0에서 1로 count는 계속 1, 1 코드 package hello.core.scope; import org.junit.jupiter.api.Test; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.context.annotation.Scope; import javax.annotation.PostConstruct; import javax.annotation.PreDe.. 2023. 4. 12.
(스프링 핵심 원리 - 기본편) 8-(4)애노테이션 @PostConstruct, 9-(1) 빈 스코프란?, (2) 프로토타입 스코프 - 애노테이션 @PostConstruct 이 방법 쓰면 된다! 이 애노테이션의 패키지는 javax => java에서 공식적으로 지원하는 패키지(스프링에 종속적인 기술이 아니라 JSR-250이라는 자바 표준. ) 따라서 혹시 다른 컨테이너를 쓰더라도 그대로 사용 가능 간편함. 최신 스프링에서 권장하는 방법 컴포넌트 스캔과 잘 어울림 단점 : 외부 라이브러리에는 적용 불가. 외부 라이브러리를 초기화, 종료해야 하면 @Bean 기능을 사용하자. - 빈 스코프란? 스프링 빈 : 스프링 컨테이너 시작과 함께 생성, 스프링 컨테이너 종료될 때까지 유지됐다고 배웠음. 이는 스프링 빈이 기본적으로 싱글톤 스코프로 생성되기 때문. 싱글톤 : 기본 스코프, 스프링 컨테이너의 시작과 종료까지 유지되는 가장 넓은 범위의 스코.. 2023. 4. 12.
(스프링 핵심 원리 - 기본편) 8-(1) 빈 생명주기 콜백 시작, (2) 인터페이스, (3) 빈 등록 초기화, 소멸 메서드 - 빈 생명주기 콜백 시작 애플리케이션과 DB를 서버 시작 시 미리 연결을 해두거나 애플리케이션 시작 시 필요한 연결을 미리 해두기. 애플리케이션 종료 시점에 연결을 모두 종료하는 작업을 진행하려면, 객체의 초기화와 종료 작업이 필요. 외부 네트워크에 미리 연결하는 객체를 하나 생성한다고 가정 NetworkClient가 애플리케이션 시작 시점에 connect()를 호출해서 연결을 맺어두어야 하고, 종료되면 disConnect() 를 호출해 연결을 끊어야 함. package hello.core.lifecycle; public class NetworkClient { private String url; public NetworkClient(){ System.out.println("생성자 호출, url = "+.. 2023. 4. 11.
(스프링 핵심 원리 - 기본편) 7-(7) 애노테이션 직접 만들기, (8) 조회한 빈이 모드 필요할 때, List, Map, (9) 자동, 수동의 올바른 실무 운영 기준 - 애노테이션 직접 만들기 @Qualifier("mainDiscountPolicy") 이렇게 문자를 적으면 컴파일 시 타입 체크가 안됨. 이런 경우 애노테이션을 직접 만들어서 해결 가능 애노테이션은 상속이라는 개념이 없음 여러 애노테이션을 모아서 사용하는 기능은 스프링이 지원하는 기능인 것. Autowired도 재정의 가능. 하지만 스프링이 제공하는 기능을 뚜렷한 목적 없이 무분별하게 재정의 하면 유지 보수에 혼란을 줄 수 있으므로 삼가자. - 조회한 빈이 모드 필요할 때, List, Map 예제 할인 서비스 제공 시, 클라이언트가 할인의 종류를 선택할 수 있다고 가정 스프링을 사용하면 전략 패턴 간단히 구현 가능 public class AllBeanTest { @Test void findAllBean(.. 2023. 4. 9.
(스프링 핵심 원리 - 기본편) 7-(4) 롬복과 최신 트랜드, (5)조회 빈이 2개 이상 - 문제, (6)@Autowired필드 명, @Qualifier, @Primary - 롬복과 최신 트랜드 개발의 대부분은 다 불변, 그래서 생성자에 final을 사용하게 됨 그런데 생성자도 만들어야하고 주입 받은 값을 대입하는 코드도 만들어야 하는데 필드 주입처럼 편하게 사용하는 방법은? 기존의 OrderServiceImpl코드를 최적화해보자. 최적화 전 @Component public class OrderServiceImpl implements OrderService{ private final MemberRepository memberRepository; private final DiscountPolicy discountPolicy; @Autowired public OrderServiceImpl(MemberRepository memberRepository, DiscountPolicy.. 2023. 4. 8.