https://codenme.tistory.com/114 스프링 핵심원리-고급편 6 [빈 후처리기] https://codenme.tistory.com/113 스프링 핵심원리-고급편 5 [스프링에서의 프록시: beanFactory] https://codenme.tistory.com/111 스프링 핵심원리-고급편 4 [프록시 패턴과 데코레이터 패턴] https://codenme.tistory.com/108 codenme.tistory.com 위의 글과 이어지는 내용 입니다. 스프링 애플리케이션에 프록시를 적용하려면 포인트컷과 어드바이스로 구성되어 있는 어드바이저 ( Advisor )를 만들어서 스프링 빈으로 등록하면 된다. 그러면 나머지는 앞서 배운 자동 프록시 생성기가 모두 자동으로 처리해준다. 자동 프록..
https://codenme.tistory.com/113 스프링 핵심원리-고급편 5 [스프링에서의 프록시: beanFactory] https://codenme.tistory.com/111 스프링 핵심원리-고급편 4 [프록시 패턴과 데코레이터 패턴] https://codenme.tistory.com/108 스프링 핵심원리-고급편 3 [스프링 디자인 패턴] https://codenme.tistory.com/105 스프링 핵심 codenme.tistory.com 위의 글에서 이어지는 내용입니다. @Bean 이나 컴포넌트 스캔으로 스프링 빈을 등록하면, 스프링은 대상 객체를 생성하고 스프링 컨테이너 내부의 빈 저장소에 등록한다. 그리고 이후에는 스프링 컨테이너를 통해 등록한 스프링 빈을 조회해서 사용하면 된다...
https://codenme.tistory.com/111 스프링 핵심원리-고급편 4 [프록시 패턴과 데코레이터 패턴] https://codenme.tistory.com/108 스프링 핵심원리-고급편 3 [스프링 디자인 패턴] https://codenme.tistory.com/105 스프링 핵심원리-고급편 2 [쓰레드 로컬을 통한 동시성 문제해결] https://codenme.tistory.com/104 스프링 codenme.tistory.com 위의 글과 이어지는 내용입니다. 프록시 팩토리 - 소개 이전 글에서 설명했던 동적 프록시를 사용할 때 문제점을 다시 확인해보자. 문제점 인터페이스가 있는 경우에는 JDK 동적 프록시를 적용하고, 그렇지 않은 경우에는 CGLIB를 적용하려면 어떻게 해야할까? 두 기..
https://codenme.tistory.com/111 스프링 핵심원리-고급편 4 [프록시 패턴과 데코레이터 패턴] https://codenme.tistory.com/108 스프링 핵심원리-고급편 3 [스프링 디자인 패턴] https://codenme.tistory.com/105 스프링 핵심원리-고급편 2 [쓰레드 로컬을 통한 동시성 문제해결] https://codenme.tistory.com/104 스프링 codenme.tistory.com 위의 글과 이어지는 내용입니다. 리플렉션 이전 글에서 프록시를 사용해서 기존 코드를 변경하지 않고, 로그 추적기라는 부가 기능을 적용할 수 있었다. 그런데 문제는 대상 클래스 수 만큼 로그 추적을 위한 프록시 클래스를 만들어야 한다는 점이다. 로그 추적을 위한 프..
https://codenme.tistory.com/108 스프링 핵심원리-고급편 3 [스프링 디자인 패턴] https://codenme.tistory.com/105 스프링 핵심원리-고급편 2 [쓰레드 로컬을 통한 동시성 문제해결] https://codenme.tistory.com/104 스프링 핵심원리-고급편 1 [예제 생성 및 요구사항 이해] https://www.inflearn.com/cours codenme.tistory.com 위의 글과 이어지는 내용입니다. 실무에선, 다양한 상황에서 프록시를 적용해야하는 상황이 존재한다. 다양한 상황에서 프록시 사용법을 이해하기 위해 다음과 같은 기준으로 기본 예제 프로젝트를 만들어보자. 예제 프로젝트 만들기 예제는 크게 3가지 상황으로 만든다. v1 - 인터페..
Apache HttpClient, OkHttpClient, 그리고 Spring WebClient은 모두 자주 사용되는 HTTP 클라이언트 라이브러리입니다. 각각의 장, 단점을 간략하게 정리하겠습니다. 1. Apache HttpClient: - 장점: - 다양한 기능과 유연성: 다양한 HTTP 요청 및 응답 구성 옵션을 제공하며, 커스터마이징 가능한 요청 인터셉터, 커넥션 풀링, 프록시 설정 등 다양한 기능을 제공합니다. - 안정성: 오랜 기간 동안 널리 사용되었고 안정성이 검증된 라이브러리입니다. - 단점: - 성능: 일부 상황에서 성능이 다른 클라이언트보다 느릴 수 있습니다. - 설정 및 사용의 복잡성: 일부 개발자들에게는 설정과 사용이 복잡하게 느껴질 수 있습니다. 2. OkHttpClient: - ..
https://codenme.tistory.com/105 스프링 핵심원리-고급편 2 [쓰레드 로컬을 통한 동시성 문제해결] https://codenme.tistory.com/104 스프링 핵심원리-고급편 1 [예제 생성 및 요구사항 이해] 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%B3%A0%EA%B8%89%ED%8E%B8/dashboard 스프링 핵 codenme.tistory.com 위 글에 이어지는 내용입니다. 템플릿 메서드 패턴 where: 쓰레드 로컬로 동시성 문제 해결 로그 추적기에서 여전히 남은 문제점- Controller에서 로직과 관련없는, 로그 코드..
제네릭(Generic)은 클래스 내부에서 지정하는 것이 아닌 외부에서 사용자에 의해 지정되는 것을 의미 제네릭의 장점 1. 제네릭을 사용하면 잘못된 타입이 들어올 수 있는 것을 컴파일 단계에서 방지할 수 있다. 2. 클래스 외부에서 타입을 지정해주기 때문에 따로 타입을 체크하고 변환해줄 필요가 없다. 즉, 관리하기가 편하다. 3. 비슷한 기능을 지원하는 경우 코드의 재사용성이 높아진다. 아래와 같이, 클래스, 인터페이스, 추상 클래스 등을 정의할 때, 타입을 임의의 제네릭으로 둔 뒤, 사용 시점에서 타입을 정의하여 사용하는 것이 가능하다. // 제네릭 클래스 class SimpleClass { private E element;// 제네릭 타입 변수 void set(E element) {// 제네릭 파라미..