전체 글
-
컴포넌트 스캔Spring/스프링 핵심 원리 - 기본편 2022. 8. 5. 10:47
[인프런] 스프링 핵심 원리 - 기본편 @Component @Autowired 📍 일일이 스프링 빈을 등록하는 것은 누락, 귀찮음 등의 문제 발생시킴! @Configuration @ComponentScan(excludeFilters = @Filter(type = FilterType.ANNOTATION, classes = Configuration.class)) // 기존 코드를 수정하지 않고 남겨두기 위해 exclude함 public class AutoAppConfig { } 📎 @ComponentScan : @Component 애노테이션이 붙은 클래스를 스캔해서 스프링 빈으로 등록함 : 사용하는 각 클래스에 @Component를 붙이면 됨 📎@Autowired : 자동으로 의존관계 주입을 해줌 ↪ 생성자..
-
싱글톤 컨테이너Spring/스프링 핵심 원리 - 기본편 2022. 8. 4. 17:57
[인프런] 스프링 핵심 원리 - 기본편 public class SingletonService { // static으로 선언했기 때문에 하나만 만들어져서 올라감 private static final SingletonService instance = new SingletonService(); // 객체를 만들어 조회할 때 사용 // instance의 참조를 꺼낼 수 있는 방법은 이 메소드 밖에 없음 public static SingletonService getInstance() { return instance; } // private로 선언했기 때문에 외부에서 생성 불가 private SingletonService() { } public void logic() { System.out.println("싱글톤 ..
-
스프링 컨테이너와 스프링 빈Spring/스프링 핵심 원리 - 기본편 2022. 8. 4. 01:40
[인프런] 스프링 핵심 원리 - 기본편 스프링 빈 조회 스프링 빈을 찾는 가장 기본적인 조회 방법 ac.getBean(빈 이름, 타입) ac.getBean(타입) 📎조회 대상 스프링 빈이 없으면 발생하는 예외 NoSuchBeanDefinitionException: No bean named 'xxxxx' available 📎타입으로 조회할 때 같은 타입의 스프링 빈이 두 개 이상 있으면 오류 발생 => 빈 이름 지정하기 ac.getBeanOfType() ↪ 해당 타입의 모든 빈 조회 가능 스프링 빈을 조회할 때 상속관계 부모 타입으로 조회하면, 자식 타입도 모두 함께 조회됨 => Object로 조회하면 모든 스프링 빈 조회함 ⭐ 📍BeanFactory와 Application..
-
이것이 자바다 | 13장 제네릭JAVA/이것이 자바다 2022. 8. 3. 18:08
📍제네릭을 사용해야 하는 이유 📎컴파일 시 강한 타입 체크를 할 수 있음 📎타입 변환(casting)을 제거함 📍제네릭 타입 (class, interface) 📎모든 종류의 객체를 저장(Object)하면서 타입 변환이 발생하지 않도록 하는 방법 => 제네릭 Box box = new Box(); // Box 클래스 내부 public class Box { private String t; public void set(String t) { this.t = t; } public String get() { return t; } } 📍멀티 타입 파라미터 (class, interface) 📎제네릭 타입은 두 개 이상의 멀티 파라미터 사용이 가능함 Product product1 = new Product(); // new..
-
스프링 핵심 원리 이해2 - 객체 지향 원리 적용Spring/스프링 핵심 원리 - 기본편 2022. 8. 3. 14:39
[인프런] 스프링 핵심 원리 - 기본편 할인 정책 변경 요청 => 금액당 할인 RateDiscountPolicyTest @DisplayName • 클래스와 메소드에 사용 가능 • 테스트의 이름을 텍스트로 설정함 할인 정책을 변경하려면 OrderServiceImpl의 new 문의 코드를 고쳐야 함 📎문제점 OrderServiceImpl은 DiscountPolicy 추상 인터페이스에 의존하긴 하지만, 구현 클래스인 FixDiscountPolicy와 RateDiscountPolicy에도 의존하고 있음 => DIP 위반 + OCP 위반 📎해결방법 인터페이스에만 의존하도록 변경하면 됨 private DiscountPolicy discountPolicy; // new 객체를 삭제 (인터페이스 문만 남김) 인터페이스..
-
스프링 핵심 원리 이해1 - 예제 만들기Spring/스프링 핵심 원리 - 기본편 2022. 8. 3. 03:30
[인프런] 스프링 핵심 원리 - 기본편 Enum 으로 member 디렉토리에 Grade라는 클래스를 만듦 📎Enum이란? 열거타입 (열거 상수) public enum Week { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY } 객체지향은 메소드를 통해 데이터를 변경하는 방법을 선호함 외부에서 메소드를 통해 데이터에 접근하도록 유도하는 것을 Setter가 해줌 외부에서 객체의 데이터를 읽을 때 직접 읽는 것이 아닌, 메소드로 필드값을 가공해서 외부로 전달하는 것을 Getter가 해줌 repository란? MVC 패턴을 먼저 알아야 함 MVC 패턴은 Model - View - Controller의 약자 • Model: 애플리케이션이 무엇을..
-
객체 지향 설계와 스프링Spring/스프링 핵심 원리 - 기본편 2022. 8. 2. 16:46
[인프런] 스프링 핵심 원리 - 기본편 좋은 객체 지향 설계의 5가지 원칙(SOLID) SRP: 단일 책임 원칙(single responsibility principle) OCP: 개방-폐쇄 원칙 (Open/closed principle) ⭐ LSP: 리스코프 치환 원칙 (Liskov substitution principle) ISP: 인터페이스 분리 원칙 (Interface segregation principle) DIP: 의존관계 역전 원칙 (Dependency inversion principle) ⭐ 단일 책임 원칙 (Single responsibility principle) 한 클래스는 하나의 책임만 가짐 변경이 있을 때 파급 효과가 적으면 단일 원칙 책임을 잘 지킨 것 OCP 개방-패쇄 원칙 (..