일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 백준
- ocp
- java
- 티스토리챌린지
- HttpServletResponse
- 오블완
- JSON
- html form
- 인터페이스
- fielderror
- 코딩테스트
- 프록시
- @configuration
- 스프링컨테이너
- DI
- http 메시지 컨버터
- equals()
- 스프링
- 다형성
- 서블릿
- 의존관계
- 코드트리
- 싱글톤
- 참조변수
- objecterror
- 김영한
- 오버라이딩
- 테스트코드
- 코드트리조별과제
- 추상클래스
- Today
- Total
목록TIL (147)
minOS
ch7-42 내부 클래스(inner class) 예시 class A { // B의 외부 클래스 class B { //A의 내부 클래스 } } 내부 클래스의 장점 - 내부 클래스에서 외부 클래스의 멤버들을 쉽게 접근할 수 있다. - 코드의 복잡성을 줄일 수 있다.(캡슐화) 실습 내부 클래스 사용 X) class A { int i = 100; B b = new B(); } class B{ void method(){ A a = new A(); System.out.println(a.i); } } class C{ B b = new B(); } public class Main { public static void main(String[] args) { B b = new B(); b.method(); } } 출력..
스프링 컨테이너 생성 ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class); 1) ApplicationContext를 스프링 컨테이너이고 인터페이스다. 2) 스프링 컨테이너는 XML 기반으로 만들 수 있고 , 애노테이션 기반의 자바 설정 클래스로 만들 수 있다. 3)'new AnnotationConfigApplicationContext(AppConfig.class);' 이 클래스는 ApplicationContext의 구현체이다. 스프링 컨테이너 생성 과정 1. 스프링 컨테이너 생성 1)new AnnotationConfigApplicationContext(AppConfig.class); 2..
스프링 사용하여 AppConfig 변경 package com.example.core; import com.example.core.discount.DiscountPolicy; import com.example.core.discount.RateDiscountPolicy; import com.example.core.member.MemberRepository; import com.example.core.member.MemberService; import com.example.core.member.MemberServiceImpl; import com.example.core.member.MemoryMemberRepository; import com.example.core.order.OrderService; impo..
IoC, DI 그리고 컨테이너 제어의 역전 IoC(Inversion of Control) AppConfig 설계 이후 , 구현 객체는 자신의 로직을 실행하는 역할만 담당한다. 프로그램의 제어 흐름은 이제 AppConfig가 가져간다. - 구현체(OrderServiceImpl)은 필요한 인터페이스들을 호출하지만 어떤 구현 객체들이 실행될지 모른다. 프로그램의 제어의 흐름에 대한 권한은 모두 AppConfig가 가지고 있다. 심지어 구현체(OrderServiceImpl)도 AppConfig가 생성한다. 이렇듯, 프로그램의 제어 흐름을 직접 제어하는 것이 아니라 외부에서 관리하는 것을 제어의 역전(IoC)이라 한다. 프레임워크 vs 라이브러리 프리엠워크 : 내가 작성한 코드를 제어하고, 대신 실행하는 것 ex..
관심사의 분리 - DIP, OCP 원칙 지키기 위해 AppConfig 클래스 - 구현 객체를 생성하고 연결을 책임지는 별도의 설정 클래스 import com.example.core.discount.FixDiscountPolicy; import com.example.core.member.MemberService; import com.example.core.member.MemberServiceImpl; import com.example.core.member.MemoryMemberRepository; import com.example.core.order.OrderService; import com.example.core.order.OrderServiceImpl; public class AppConfig { p..
새로운 할인 정책 개발 public class FixDiscountPolicy implements DiscountPolicy { private int discountFixAmount = 1000; @Override public int discount(Member member, int price) { if (member.getGrade() == Grade.VIP) { return discountFixAmount; } else return 0; } } 원래 할인 정책에서 새로운 할인 정책 하나를 추가했습니다. public class RateDiscountPolicy implements DiscountPolicy{ private int discountPercent =10; @Override public int..