no image
Spring Container에 등록된 모든 빈(Bean) 조회하기
김영한님의 스프링 핵심 원리 - 기본편 강의 26강 컨테이너에 등록된 모든 빈 조회, 27강 스프링 빈 조회-기본을 듣고 작성했습니다. 모든 빈 출력하기 public class ApplicationContextInfoTest { AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class); @Test @DisplayName("모든 빈 출력하기") void findAllBean() { String[] beanDefinitionNames = ac.getBeanDefinitionNames(); // 스프링에 등록된 모든 빈 이름 조회 for (String beanDefinitionName : bean..
2023. 1. 24. 18:22
no image
스프링 컨테이너(Spring Container)의 배경
김영한님의 스프링 핵심 원리 - 기본편 강의 25강 스프링으로 전환하기를 듣고 작성했습니다. 실습 기존의 AppConfig를 두가지 어노테이션을 붙혀서 스프링으로 바꿔보자! @Configuration: 애플리케이션 설정 정보 @Bean: Spring Container에 등록이 된다. @Configuration public class AppConfig { /** * 생성자 주입 */ @Bean public MemberService memberService() { return new MemberServiceImpl(memberRepository()); } @Bean public MemberRepository memberRepository() { return new MemoryMemberRepository()..
2023. 1. 24. 17:30
no image
IoC, DI, 그리고 컨테이너
김영한님의 스프링 핵심 원리 - 기본편 강의 24강 IoC, DI, 그리고 컨테이너를 듣고 작성했습니다. 제어의 역전 IoC (Inversion of Control) 프로그램의 제어 흐름을 직접 제어하는 것이 아니라 외부에서 관리하는 것이다. ex.지금까지 실습한 예시 중 프로그램에 대한 제어 흐름 권한을 AppConfig가 가지고 있었다. 프레임 워크 vs 라이브러리 프레임워크: 내가 작성한 코드를 제어하고, 대신 실행하면 프레임워크 (JUnit) 라이브러리: 내가 작성한 코드가 직접 제어의 흐름을 담당한다면 그것은 프레임워크가 아니라 라이브러리 ex. 자바 객체를 xml or json으로 바꿈. 라이브러리 불러다가 직접 호출. 의존관계 주입 DI (Dependency Injection) 정적인 클래스..
2023. 1. 24. 16:55
no image
관심사의 분리 - DIP 지키기
김영한님의 스프링 핵심 원리 - 기본편 강의 19강 관심사의 분리를 듣고 작성했습니다. DIP 지키기 - 의존 역전 원칙 (Dependency Inversion Principle) 이전 코드의 문제점 public class OrderServiceImpl implements OrderService { //private final DiscountPolicy discountPolicy = new FixDiscountPolicy(); //추상에도 의존, 구체에도 의존 OCP 위반 private final DiscountPolicy discountPolicy = new RateDiscountPolicy(); //추상에도 의존, 구체에도 의존 OCP 위반 } 인터페이스(주문 역할) 이 구현체(할인)가 주문이 직접 ..
2023. 1. 1. 23:04
no image
OCP와 DIP를 지키기 위한 발걸음
김영한님의 스프링 핵심 원리 - 기본편 강의 18강 새로운 할인 정책 적용과 문제점을 듣고 작성했습니다. public class OrderServiceImpl implements OrderService { private final MemberRepository memberRepository = new MemoryMemberRepository(); //private final DiscountPolicy discountPolicy = new FixDiscountPolicy(); //추상에도 의존, 구체에도 의존 OCP 위반 private final DiscountPolicy discountPolicy = new RateDiscountPolicy(); //추상에도 의존, 구체에도 의존 OCP 위반 @Overr..
2023. 1. 1. 22:13
no image
좋은 객체 지향 설계의 5가지 원칙 (SOLID)
김영한님의 스프링 핵심 원리 - 기본편 강의를 듣고 작성했습니다. 객체 지향 설계 5가지 원칙 - SOLID 클린코드로 유명한 로버트 마틴이 좋은 객체 지향 설계의 5가지 원칙을 정리했다. SRP: 단일 책임 원칙 (single responsibility principle) OCP: 개방-폐쇄 원칙 (Open/closed principle) LSP: 리스코프 치환 원칙 (Liskov substitution principle) ISP: 인터페이스 분리 원칙 (Interface segregation pinciple) DIP: 의존관계 역전 원칙 (Dependency inversion principle) SRP 단일 책임 원칙 한 클래스는 하나의 책임만 가져야 한다. 하나의 책임이라는 것은 모호하다. 클 수도..
2022. 12. 23. 20:26
no image
[강의 수강] 스프링 핵심 원리 - 기본편 (1)
[김영한님] 스프링 핵심 원리 - 기본편 강의 수강 https://inf.run/d1LX 스프링 핵심 원리 - 기본편 - 인프런 | 강의 스프링 입문자가 예제를 만들어가면서 스프링의 핵심 원리를 이해하고, 스프링 기본기를 확실히 다질 수 있습니다., - 강의 소개 | 인프런... www.inflearn.com 커리큘럼 65 강의 (12시간 7분) 객체 지향 설계와 스프링 강의 제목 시간 배운 점 1 강의 소개 4 2 이야기 - 자바 진영의 추운 겨울과 스프링의 탄생 15 3 스프링이란? 14 스프링의 핵심 개념, 컨셉 - 스프링은 자바 언어 기반의 프레임워크 - 자바 언어의 가장 큰 특징은 객체 지향 언어 - 스프링은 객체 지향 언어가 가진 강력한 특징을 살려내는 프레임워크 - 스프링은 좋은 객체 지향 ..
2022. 12. 11. 23:47