WINK-(Web & App)/Spring Boot 스터디 (59) 썸네일형 리스트형 (미완성)[2024-2 SpringBoot 스터디] 정호용 #6주차 섹션 8~9 섹션 8다양한 의존관계 주입 방법크게 4가지 방법이 있음- 생성자 주입- 수정자 주입(setter 주입)- 필드 주입- 일반 메서드 주입 1. 생성자 주입OrderService의 구현체에 들어가보면, 생성자에 @Autowired가 있다. 스프링쪽에서 이걸 보면, 바로 MemberRepository와 DiscountPolicy를 꺼내서 주입해준다.- 생성자 호출시점에 딱 1번만 호출되는게 보장됨. -> 두번 호출되는것을 막을 수 있음.- 불변, 필수 의존관계에 사용됨. 여기서 생성자 호출 이후로 아무도 MemberRepository와 DiscountPolicy를 수정할 수 없다. 즉 얘는 불변임.* 좋은 개발습관은 한계점과 제약을 적절히 사용하는것. 불변이라는 개념은 정말로 중요하다. final로 선언했으.. [2024-2 Spring Boot 스터디] 조상혁 #6주차 이 글은 스프링 핵심 원리 - 기본편을 기반으로 작성되었습니다. 이번 주차는 다음주가 시험주간인 관계로 가장 중요하다고 생각했던 부분인자동등록과 수동등록을 언제 사용할 것인가를 정리해 볼까한다. 자동, 수동의 올바른 실무 운영 기준 제목에서 설명하는 자동과 수동은 빈 객체의 등록 즉 설정파일에 대해서 말하는 것이다. 이번 강의를 들으면서 깨달은 것 중에 이미 만들어 진 것을 쓰면 개발도 편하고 오류도 적어진다...!!라는 교훈을 얻었는데 이 깨달음을 얻게 하는데 1등 공신이 자동등록이다. 실제로 자동등록은 어노테이션 @Component , @Controller , @Service , @Repository 이것들로 딸깍.. 하면스프링 부트가 알아서 스캔하여 잘 만들어 주는데 , 내가 수동으로 등록하면 객.. [2024-2 Spring Boot 스터디] 김아리 #5주차 [싱글톤 등장 배경]스프링은 보통 웹 애플리케이션 개발에 많이 사용된다. 웹 애플리케이션 특성상 여러 고객이 동시에 요청한다. 이때 고객이 서비스를 요청할 때마다 DI 컨테이너인 AppConfig가 새로운 서비스 객체를 생성한다면 초당 몇 백, 몇 만개의 객체를 생성해야 해야 하므로 메모리 낭비가 심하다. --> 해결방안: 해당 객체가 1개만 생성되고 이것을 공유하도록 설계하는 싱글톤 패턴을 적용하면 된다. [싱글톤 패턴]객체를 딱 1개만 만들어 그것을 재사용한다. 하지만 여러 개의 문제점을 갖고 있다. 싱글톤 패턴을 구현하는 코드 자체가 많이 들어간다. 의존관계상 클라이언트가 구체 클래스에 의존한다(구체 클래스.getInstance()). --> DIP를 위반한다. 클라이언트가 구체 클래스에 의존해서.. [2024-2 Spring Boot 스터디] 조상혁 #5주차 이 글은 스프링 핵심 원리 - 기본편을 기반으로 작성되었습니다. 여러가지 싱글톤을 구현하는 방법..싱글톤 컨테이너 웹 어플리케이션과 싱글톤스프링은 보통 웹 서비스에서 사용된다.웹은 다양한 사용자가 동시에 많은 요청을 한다는 특징이 있다. 그렇다면 지금까지 개발해온 것들은 그 요청을 잘 수행할까?아래 그림을 보며 생각해보자. 클라이언트 한명 당 하나의 객체가 생성되는 모습을 볼 수 있다. 너무나 메모리 낭비가 심하다. 이는 결국 비용적 문제로 이어질 수 있다. 음 그럼 어떤 해결방법이 있을까?3형제가 있는데 장난감을 하나씩 사주는건 너무 비싸다.그러면 하나사서 나눠쓰라고 하면 좋지 않을까!객체도 하나로 나눠쓰는게 좋지 않을까..! 일단 객체가 생성되는지 확인해보자. 싱글톤 패턴 객체를 하나만 만들어 사용.. [2024-2 Spring Boot 스터디] 김문기 #5주 section 6if 만약 우리가 스프링 없이 순수한 DI 컨테이너를 통해 애플리케이션을 생성했다면?위와 같이 각 고객이 요청을 보낼 때마다 객체가 생성된다.따라서 우리는 객체를 딱 1번만 생성되게 하고 공유하게 해야한다. => 이러한 방식을 싱글톤 패턴이라고 한다. 싱글톤 패턴 public class SingletonService { //1. static 영역에 객체를 딱 1개만 생성해둔다. private static final SingletonService instance = new SingletonService(); //2. public으로 열어서 객체 인스턴스가 필요하면 이 static 메서드를 통해서만 조회하도록 허용한다. } public static SingletonService ge.. [2024-2 SpringBoot 스터디] 정호용 #5주차 섹션 6~7 웹 애플리케이션과 싱글톤- 대부분의 스프링 애플리케이션은 웹 애플리케이션이다.- 웹 애플리케이션은 보통 여러 고객이 동시에 요청함- 고객이 3번 요청 -> 3개 객체 생성- 실제로 두개의 다른 객체 생성됨- 순수한 DI 컨테이너인 AppConfig는 요청할 때마다 객체를 새로 생성- 메모리 낭비가 심함- 해결방안은 객체를 하나만 생성 -> 객체 인스턴스 공유 싱글톤 패턴- 클래스의 인스턴스가 딱 1개만 생성하는 것을 보장하는 디자인 패턴- 객체 인스턴스를 2개이상 생성 못하도록 막아야 함.- static영역에 객체 인스턴스를 생성- getInstance로만 조회가능- 1개의 객체 인스턴스만 존재해야 하므로, 생성자를 private로 막아야 한다. -> new 키워드로 객체 인스턴스가 생성되는 것을 방지-.. [2024-2 SprintBoot 스터디] 윤성욱 #4주차 Spring 컨테이너와 DI(의존성 주입)1. Spring 컨테이너란?Spring 컨테이너는 애플리케이션에서 객체를 생성하고 관리하며, 객체들 간의 의존성을 설정하는 핵심 역할을 담당힌다.이를 통해 개발자는 객체의 생성 및 관리를 컨테이너에 맡기고 비즈니스 로직에만 집중할 수 있다. 스프링 컨테이너의 주요 특징 1. Bean 관리컨테이너는 객체(스프링 빈)를 생성하고 생명 주기를 관리한다. 2. 의존성 주입(DI)각 객체가 필요로 하는 의존성을 주입하여 객체 간의 결합도를 낮춘다. 3. 제어의 역전(IoC)객체의 생성 및 생명 주기 관리를 컨테이너가 책임짐으로써 객체는 자신의 로직 구현에만 집중할 수 있다. 스프링 컨테이너 생성 예시// 스프링 컨테이너 생성ApplicationContext applica.. [2024-2 Spring Boot 스터디] 김문기 #4주 Section 4* 이전에 만들었던 FixDiscountPolicy 말고 새로운 할인 정책 RateDiscountPolicy를 적용해야 한다.public class OrderServiceImpl implements OrderService { // private final DiscountPolicy discountPolicy = new FixDiscountPolicy(); private final DiscountPolicy discountPolicy = new RateDiscountPolicy(); }적용 하기 위해서는 위와 같이 OrderServiceImpl 코드를 고쳐야 한다.# 위의 과정에서 문제점 발견=> 추상클래스 뿐만 아니라 구체(구현) 클래스에도 의존하게 된다. = DIP를 위반하게 .. 이전 1 2 3 4 ··· 8 다음