본문 바로가기

스프링

(8)
수강 후기) @Configuration과 바이트코드 조작의 마법 [ 배운점 ] - 비밀? => @Configuration 의 역할 - 클래스가 새로 만들어졌다 => 다른 거를 빈으로 등록하였다 - 있으면 => 컨테이너 것 반환 - 없으면 => 생성 및 등록해서 반환 - 싱글톤 방법이 => 위 @Configuration 을 사용하는 방법이다 - AppConfig@cglib은 => AppConfig의 자식 클래스이다 [ 느낌 및 생각 ] - 왜 바이트 코드 조작? => CGLIB이 그 방식 강의 정보 - 인프런
수강 후기) 라이브러리 살펴보기 [ 배운점 ] - [ 생각 및 느낌 ] -
수강후기) @Configuration과 싱글톤 [ 배운점 ] - bean 생성 시 마다 new가 호출되서 여러번 호출 되는거 아니야? => 아니다. ==> bean으로 등록되면 singleton 이다 ====> 그럼 stateless 하게 만들어야 함 - 그럼 어떻게 재사용 하는가? => (다음 강의에서 설명) [ 느낌 및 생각 ] - 궁금한게 있으면 직접 테스트 해본다 => 실무에서도 이러면 될까? ==> 테스트 해보면 된다! 관련 강의 인프런
수강후기) 싱글톤 방식의 주의점 [ 배운점 ] - stateful 하면 안된다 - stateless 해야 한다 - stateless 명심 4가지 => 클라이언트 의존적인 필드 X => 클라이언트가 값 변경하는 필드 X => READ-ONLY => 공유되지 않는 지역변수, 파라미터, ThreadLocal 등 사용 - 스프링 빈은 무상태 인가? => 스프링 빈은 항상 stateless 방식으로 설계해야 한다! [ 느낌 및 생각 ] - IT의 가치는 자동화 이지만 => 그 자동화를 하므로서 생기는 비용이 생긴다 ==> 예를 들어, 프로그램 적으로 문제가 발생하는 것 관련 강의 인프런
수강후기) 싱글톤 컨테이너 [ 배운점 ] - 스프링 컨테이터 => 싱글톤 레지스트리 역할 [ 생각과 느낌 ] - 테스트 케이스 만들 때 => 테스트 자체를 잘못 만들 수 있으니 확인 필요 - 싱글톤을 안하고 싶을 때도 있을까? => 빈 스코프 방식에서 잘 설명되어 있다 ==> 스프링에서 스코프라는 것은 생명 주기와 관련이 된다 관련 강의 인프런
수강후기) 싱글톤 패턴 [ 배운점 ] - 다른 곳에서 생성 못하게 => private 생성자 활용 - 싱글톤 패턴에 많은 문제점이 있다 => 이를 스프링은 어떻게 해결? ==> 단점을 다 제거하고 싱글톤 객체를 잘 관리해줌 [ 생각과 느낌 ] - 컴파일 오류만으로 오류가 잘 잡히는 것이 잘 설계된 것이다 => 컴파일 오류가 잘 잡히도록 언어의 기본 설계 습관이 중요하다 - 생성 보다 참조 => 빠른 실행을 위해 중요하다 - 효율 보다 안전함 => 아주 미비한 메모리를 희생해서 동시에 new 하는 것을 예방 관련 강의 인프런
수강 후기) 웹 애플리케이션과 싱글톤 [ 깨달음 ] - 스프링 태생: 온라인 서비스 기술 지원 => 온라인 서비스는 여러 고객이 동시에 요청 (거의 똑같은 요청) - 요청이 올 때 마다 객체 생성 => 많은 resource 낭비다 - 작성한 순수한 DI 컨테이너가 갖는 문제점 => 하나의 서비스를 처리 할 때마다 계속 해당 서비스 객체가 새로 생성됨 [ 생각과 느낌 ] - 생각해보니 객체는 필요할 때마다 생성하는게 맞는것 같다 => 객체 재사용에는 문제가 없을까? ==> GPT 검색 후 결론: instance는 재사용 하는게 맞음. 다만, 상황에 따라 재사용 안해야 될 때도 있음 관련 강의 인프런
수강 내용 정리) 스프링 핵심 원리 - 기본편 [다양한 설정 형식 지원 - 자바 코드, XML] [ 깨달음 ] - 지금까지 했던 것은 => AnnotationConfig - XML (GenericXml) => 장점도 있다 ==> 컴파일 없이 빈 설정 정보 변경 가능 - 스프링은 Annotation, XML 이외도 다양한 설정 방법이 가능하구나 [ 생각과 느낌 ] - (복습) constructor argument를 사용해서 구체 클래스를 주입하는 구나 - (깨달음) 이전에 원리를 모르고 XML을 ANNOTATION CONFIG로 바꾸려 해서 어려웠던 것이구나