TIL/스프링 핵심원리 - 기본편 with 인프런(김영한님) (14) 썸네일형 리스트형 스프링 핵심원리 기본편14 - @Configuration과 싱글톤/@Configuration과 바이트코드 조작의 마법 안녕하세요 오늘도 공부한 내용을 정리해 보도록 하겠습니다. 먼저 @Configuration을 공부해 보겠습니다. 12345678910111213141516 @Bean public MemberService memberService() { return new MemberServiceImpl(memberRepository()); } @Bean public MemberRepository memberRepository() { return new MemoryMemberRepository(); } @Bean public OrderService oderService() { return new OrderServiceImpl(memberReposit.. 스프링 핵심원리 기본편13 - 싱글톤 컨테이너, 싱글톤 방식의 주의점 안녕하세요. 오늘은 싱글톤 컨테이너는 공부해 보겠습니다. 스프링 컨테이너는 싱글턴 패턴을 적용하지 않아도 객체 인스턴스를 싱글톤으로 관리해 줍니다.스프링 컨테이너는 싱글톤 컨테이너 역할을 하며 이러한 싱글톤 객체 생성 관리 기능을 싱글톤 레지스트라고 합니다. 스프링 컨테이너 사용 시 싱글톤 패턴을 위한 코드가 필요하지 않아 코드가 깔끔해집니다. 그리고 private 생성자로부터 자유롭게 싱글톤을 사용할 수 있습니다. 소스로 구현해 보면123456789101112 AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class); MemberServ.. 스프링 핵심원리 기본편12 - 웹 애플리케이션과 싱글톤, 싱글톤 패턴 안녕하세요 오늘은 웹 애플리케이션과 싱글톤 강의를 정리해 보겠습니다. 싱글톤은 객체 인스턴스가 하나만 있어야 하는 패턴을 말합니다보통 웹은 여러 고객이 동시에 요청을 하고 고객이 요청이 올 때마다 객체를 만들어야 합니다.그렇다면 서비스를 호출하여도 참조값이 다르게 됩니다. 즉 jvm 메모리에 계속 객체가 생생되어 올라갑니다. 예시를 보여드리겠습니다.12345 MemberService memberService1 = appconfig.memberService(); MemberService memberService2 = appconfig.memberService(); System.out.println("memberService1 = " + memberServ.. 스프링 핵심원리 기본편11 - BeanDefinition 안녕하세요 오늘의 공부를 정리해 보겠습니다. 스프링이 다양한 설정 형식을 지원할 수 있는 이유는 BeanDefintion이라는 추상화 때문입니다.어떠한 형식으로 설정 정보를 받더라도 BeanDefinition을 만들면 설정 정보를 스프링에서 사용할 수 있습니다. 즉 스프링 컨테이너는 설정을 xml로 했는지 자바 코드로 했는지 아니면 아예 다른것으로 했는지 신경을 안 쓰고 BeanDefinition만을 바라보면 됩니다. BeanDefinition을 직접 생성해 스프링 컨테이너에 등록도 가능하지만 실무에서 사용할 일은 거의 없다고 합니다. 요번 수업은 크게 중요하지 않고 교양 정도로 생각하며 들으면 된다고 하셔서 간단히 정리하고 마치도록 하겠습니다. 감사합니다. 스프링 핵심원리 기본편10 - BeanFactory와 ApplicationContext & 자바 코드, XML 안녕하세요 오늘은 김영한의 스프링 핵심원리 기본편 공부를 정리해 보도록 하겠습니다. BeanFactory* 스프링 컨테이너의 최상위 인터페이스* 스프링 빈을 관리 조회 역할 ApplicationContext* BeanFactory의 기능을 모두 상속받아 제공* 빈 관리 조회 기능뿐만 아니라 수많은 부가기능 제공하여 BeanFactory와의 차별빈팩토리와 어플리케이션컨택스트를 스프링 컨테이너라고 부릅니다. 다양한 설정 형식 지원스프링 컨테이너는 다양한 형식의 설정 정보를 받아들일 수 있게 유연하게 설계되어 있습니다. 지금 까지는 에노테이션 컨피그를 사용하여 설정정보를 저장하였습니다. (AppConfig.class)요즘은 xml기반의 설정정보를 잘 사용하지 않지만 한번 공부해 보면 좋다고 강의를 진행해 주.. 스프링 핵심원리 기본편9 - 스프링 빈 조회(상속관계) 안녕하세요 오늘은 상속관계에 대해 정리해 보겠습니다. 상속관계는 상당히 중요한 내용이라고 합니다. 스프링 빈 조회 시 부모타입으로 조회했을 때 자식이 여러 개 있으면 모두 조회가 됩니다. 자바의 최상의 부모는 object여서 object 타입으로 조회 시 모든 스프링 빈이 조회 됩니다. 실습으로 들어가 먼저 config를 만들어 줍니다.123456789101112131415@Configuration static class TestConfig{ // AppConfig를 수정하지 않기 위해 요기서만 쓰기 위해 만듬 @Bean public DiscountPolicy rateDiscountPolicy() { return new RateDiscou.. 스프링 핵심원리 기본편8 - 동일 타입이 둘 이상 안녕하세요 오늘 강의를 정리해 보겠습니다. 스프링 빈을 조회할 때 타입으로 조회 시 같은 타입의 스프링빈이 둘 이상이면 오류가 발생합니다. 이럴 때는 빈 이름을 지정해 주면 됩니다. getBeansOfType() 사용 시 해당 타입의 모든 빈을 조회할 수 있습니다. 소스로 보여드리겠습니다. 일반 먼저 저희가 계속 사용할 Appconfig 파일을 수정하면서 테스트를 하는 건 별로 좋은 방향이 아니기 때문에 class안에 static class로 임시 config class를 만들어 주겠습니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 @Configuration static class SameBeanConfig{ // AppConfig를 수정하지 않기 위해 요기서만 쓰기 위해 만듬 @Bea.. 스프링 핵심원리 기본편7 - 스프링 빈 조회(기본) 안녕하세요. 스프링 빈을 조회하는 기본적인 방법을 공부해 보겠습니다. getBean(빈이름,타임)으로 조회가 가능하며 빈이름은 생량이 가능합니다. 실습으로 확인해보기 위한 코드는 아래와 같고 1234 AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class); MemberService memberService = ac.getBean("memberService",MemberService.class); System.out.println("memberService = " + memberService); System.out.println("membe.. 이전 1 2 다음