Spring

Spring/객체지향

스프링 삼각형 : AOP(Aspect-Oriented Programming), PSA(Portable Service Abstraction)

스프링 삼각형 스프링을 이해하는 데는 POJO(Plain Old Java Object)를 기반으로 스프링 삼각형이라고 불리는 IoC/DI, AOP, PSA의 이해가 필수이다. 이전 게시글에서 IoC/DI에 대해 다루었다. https://shout-to-my-mae.tistory.com/425 스프링 삼각형 : IoC(제어의 역전) / DI(의존성 주입) 스프링 삼각형 스프링을 이해하는 데는 POJO(Plain Old Java Object)를 기반으로 스프링 삼각형이라고 불리는 IoC/DI, AOP, PSA의 이해가 필수이다. 스프링 프레임워크는 스프링 삼각형의 조합으로 이해할 shout-to-my-mae.tistory.com AOP (Aspect-Oriented Programming) 관점(Aspect)..

Spring/객체지향

스프링 삼각형 : IoC(제어의 역전) / DI(의존성 주입) + POJO 지향

스프링 삼각형 스프링을 이해하는 데는 POJO(Plain Old Java Object)를 기반으로 스프링 삼각형이라고 불리는 IoC/DI, AOP, PSA의 이해가 필수이다. 스프링 프레임워크는 스프링 삼각형의 조합으로 이해할 수 있다. IoC/DI IoC (Inversion Of Control : 제어의 역전) 이라고도 하는 DI(Dependency Injection : 의존성 주입)을 알아보자. 우선 의존성이란 무엇일까? 의존성 의존성은 new이다. 의사 코드 : 운전자가 자동차를 생산한다. 코드 : new Car(); 의사 코드 : 자동차는 내부적으로 타이어를 생산한다. 코드 : Car 객체 생성자에서 new Tire(); Car는 Tire에 의존한다. 즉 전체가 부분에 의존한다. 의존관계 집합 관..

Spring

[Test] void 메서드 테스트 및 Stubbing (모의 동작 지정하기)

void 메서드 테스트하기 void 메서드를 테스트하려고하는데 구글링으로 찾기 어려워 정리했다. doNothing() doNothing().when(mockObject).voidMethod(); void 메서드 호출 시 아무것도 하지 않도록 설정한다. voidMethod()부분에는 실제 void 메서드 명을 적어주어야한다. doThrow() doThrow(new RuntimeException()).when(mockObject).voidMethod(); void 메서드 호출 시 특정 예외를 던지도록 설정한다. doCallRealMethod() doCallRealMethod().when(mockObject).voidMethod(); mock 객체의 void 메서드 호출 시 실제 메서드를 호출한다. mock ..

Spring/객체지향

코드에 SRP 원칙 적용 후 Mock 테스트 작성하기

SRP(Single Responsibility Principle) : 단일 책임 원칙 어떤 클래스를 변경해야 하는 이유는 오직 하나뿐이어야 한다. - 로버트 C.마틴 하나의 클래스에 역할과 책임이 너무 많은 경우 클래스를 각각의 역할과 책임에 따라 분리하자는 원칙이다. SRP 원칙을 통해 클래스 하나가 과도한 책임을 가지는 것을 방지하고, 각 클래스의 책임이 명확해진다. 아래 글에 SOLID에 대해 정리했으니 시간나면 읽어보는 것도 좋다. https://shout-to-my-mae.tistory.com/417 객체 지향 설계 5원칙: SOLID 객체 지향 언어를 이용해 객체 지향 프로그램을 올바르게 설계하는 방법과 원칙이 존재한다. SOLID 객체 지향 설계(OOD)의 정수라고 할 수 있는 5원칙이다. ..

Spring/객체지향

객체 지향과 디자인 패턴

객체 지향과 디자인 패턴 객체 지향 특성(캡슐화, 상속, 추상화, 다형성) : 요리도구 객체 지향 설계 5원칙 (SOLID) : 요리도구를 올바르게 사용하는 방법 디자인 패턴 : 레시피 요리도구를 사용하여 요리를 만들때, 하나의 요리에도 표준화된 요리법이 있듯이 프로그래밍에도 표준화된 해결책이 있다. 디자인(설계) 패턴 프로그램을 작성하다보면 비슷 비슷한 상황에 직면하게 되는 경우가 많은데, 그러한 상황에서 이전에 많은 개발자들이 고민하고 정제한 사실 상의 표준 설계 패턴이다. 실제 개발 현장에서 비즈니스 요구사항을 프로그래밍으로 처리하면서 만들어진 다양한 해결책 중에서 많은 사람들이 인정한 best practice이다. 객체 지향 특성과 설계 원칙을 기반으로 구현한다. 스프링 프레임워크 공식적인 정의 ..

Spring/객체지향

객체 지향 설계 5원칙: SOLID

객체 지향 언어를 이용해 객체 지향 프로그램을 올바르게 설계하는 방법과 원칙이 존재한다. SOLID 객체 지향 설계(OOD)의 정수라고 할 수 있는 5원칙이다. SRP(Single Responsibility Principle) : 단일 책임 원칙 OCP(Open Closed Principle) : 개방 폐쇄 원칙 LSP(Liskov Substitution Principle) : 리스코프 치환 원칙 ISP(Interface Segregation Principle) : 인터페이스 분리 원칙 DIP(Dependency Inversion Principle) : 의존 역전 원칙 SOLID는 소프트웨어에 녹여 내야 하는 개념이다. SOLID를 잘 녹여낸 소프트웨어는 상대적으로 이해하기 쉽고, 리팩터링과 유지보수가 ..

Spring/객체지향

Java가 확장한 객체 지향 (abstract, 생성자, static, final, this, super)

Java가 확장한 객체 지향 java가 객체 지향을 확장하기 위해 사용하는 키워드와 개념을 알아보자. abstract 키워드 - 추상 메서드와 추상 클래스 추상 메서드(Abstract Method) 선언부는 있는데 구현부가 없는 메서드 추상 클래스(Abstract Class) 추상 메서드를 하나라도 갖고 있는 클래스 추상 메서드가 필요한 이유 package abstractMethod01; public class Driver{ public static void main(String[] args){ 동물[] 동물들 = new 동물[3]; 동물들[0] = new 쥐(); 동물들[1] = new 고양이(); 동물들[2] = new 강아지(); for (int i=0;i 메서드 선언은 있되 몸체는 없는 abstr..

Spring

[Test] static 블록 vs @BeforeClass

static 초기화 블록 클래스가 JVM에 처음 로드될 때 한번 실행되며, 클래스 레벨에서 공유되는 정적 자원이나 설정 초기화시 사용된다. static 블록 내에서 예외가 발생하면 JUnit과 같은 테스트 프레임워크가 처리하는 것에 어려움이 있다. static 블록의 실행 시점이 명확하지 않다. public class StaticInitializationExample { private static final int SIZE; private static final List NAMES = new ArrayList(); static { SIZE = getIntFromConfigFile("config.txt"); NAMES.add("Alice"); NAMES.add("Bob"); } } @BeforeClass ..

mint*
'Spring' 카테고리의 글 목록