1. 제어의 역전 IoC (Inversion of Control) - 예제 프로젝트를 개발하면서 AppConfig를 사용하지 않았을때, 클라이언트 구현 객체가 스스로 필요한 구현 객체를 생성(new)하고, 연결하고, 실행했다. 즉, 구현 객체가 프로그램의 제어 흐름을 스스로 조종한 것이다. 솔직히 개발자 입장에서는 매우 자연스러운 흐름이다. - 하지만, AppConfig의 등장 이후, 구현 객체는 오직 자기가 맡은 역할을 실행하는 것에만 집중한다. 프로그램의 제어는 이제 AppConfig가 하는것이다. - 이렇듯 프로그램의 제어 흐름을 직접 제어하는 것이 아니라 외부에서 관리하는 것을 제어의 역전(IoC)이라고 한다. 2. 의존관계 주입 (Dependency Injection) - 의존관계는 정적인 클래..
서론 - 이전 포스트까지의 코드는 역할과 구현을 분리하여 설계하였다. - 하지만 새로운 기능의 확장을 위해 결국 OrderServiceImpl의 코드를 변경하였다. (OCP 위반) - 또한 인터페이스 뿐만 아니라 구현체에도 의존하고 있었다. (DIP 위반) - 이를 극복하기 위해 클라이언트인 OrderServiceImpl에 DiscountPolicy의 구현 객체를 대신 생성하고 주입해야 한다 는것을 알게되었다. - 이번 포스트에선 OCP와 DIP를 지키기위해 "구현 객체를 생성"하고, "연결"하는 책임을 가지는 별도의 설정 클래스 AppConfig를 만들것이다. AppConfig 생성 기존의 MemberServiceImpl은 사진과 같이 MemberRepository 인터페이스와 MemoryMemberR..
서론 - Spring의 기능을 쓰지 않고 순수한 Java로 프로젝트를 설계하기 - 순수 Java로 설계한 프로젝트에서 서비스를 확장해보기 - 이때, 객체지향의 원칙을 잘 준수 했는지 확인해보기 1. 프로젝트 생성 https://start.spring.io/ 2. 비즈니스 요구사항 회원 회원을 가입하고 조회할 수 있다. 회원은 일반과 VIP 두 가지 등급이 있다. 회원 데이터는 자체 DB를 구축할 수 있고, 외부 시스템과 연동할 수 있다. (미확정) 주문과 할인 정책 회원은 상품을 주문할 수 있다. 회원 등급에 따라 할인 정책을 적용할 수 있다. 할인 정책은 모든 VIP는 1000원을 할인해주는 고정 금액 할인을 적용해달라. (나중에 변경 될 수 있다.) 할인 정책은 변경 가능성이 높다. 회사의 기본 할인..
SOLID - 클린코드로 유명한 로버트 마틴이 좋은 객체 지향 설계의 5가지 원칙을 정리한 것이다. SRP: 단일 책임 원칙(single responsibility principle) OCP: 개방-폐쇄 원칙 (Open/closed principle) LSP: 리스코프 치환 원칙 (Liskov substitution principle) ISP: 인터페이스 분리 원칙 (Interface segregation principle) DIP: 의존관계 역전 원칙 (Dependency inversion principle) 1. SRP 단일 책임 원칙 (Single Responsibility Principle) 한 클래스는 하나의 책임만 가져야 한다. 하나의 책임이라는 것은 모호하다. 클 수도 있고, 작을 수도 있다..
객체 지향 프로그래밍이란? 구글에 "객체 지향 프로그래밍"을 검색하면 다음과 같이 나온다. 유연하고, 변경이 쉽다? => 레고 블럭을 조립하듯이, 키보드, 마우스를 갈아 끼우듯이, 컴퓨터 부품을 갈아 끼우듯이, 컴포넌트를 쉽고 유연하게 변경하면서 개발할 수 있는 방법. 객체 지향의 특징 추상화(Abstarction) 불필요한 부분을 생략하고 객체의 속성 중 가장 중요한 것에만 중점을 두어 모델화하는 것. 객체(클래스)를 정의하는 것을 추상화라고 할 수 있다. 캡슐화(Encapsulation) 추상화를 통해 객체를 정의했다면, 객체에 필요한 데이터나 관련 메소드를 그룹화하는것이다. 실제로 구현되는 부분을 외부에 드러나지 않도록 하여 정보를 은닉할 수 있다. 코드가 묶여있어서 오류가 없어 편리하다. 캡슐화 ..
1. Spring이란? - 스프링은 특정한 하나가 아니라 여러가지 기술들의 모음이다. - 가장 핵심이 되는 Spring Framework, 여러 Spring 기술들을 편리하게 사용 가능하게 하는 Spring Boot - 그 외에도 Spring Data, Spring Session, Spring Security, Spring Rest Docs, Spring Batch, Spring Cloud 등이 있다. Spring | Projects Spring Framework Provides core support for dependency injection, transaction management, web apps, data access, messaging, and more. spring.io Spring Fra..
AOP 란? - AOP 란 Aspect Oriented Programming의 약자로 관점 지향 프로그래밍을 의미. - 어떤 로직을 기준으로 핵심적인 관점, 부가적인 관점으로 나누어서 보고 그 관점을 기준으로 각각 모듈화하겠다는 것. - 핵심적인 관점 : 핵심 비즈니스 로직. 로직의 존재 이유. - 부가적인 관점 : 해당 로직에 걸리는 시간, 로그, DB 연결 등 공통적인 로직 - AOP의 취지 : 부가적인 로직을 여러 메서드에 일일이 넣는것 대신 관점별로 모듈화하여 재사용하도록 함. -> 효율성↑ 1. AOP가 필요한 상황 - 상황 : 모든 메소드가 동작하는 시간을 측정하라. 회원가입, 회원조회 등의 메소드에 시간을 측정하는 기능은 핵심적인 관점이 아니라 부가적인 관점이다. 회원가입, 회원조회 등의 메..
스프링 데이터 엑세스의 여러가지 방법을 과거의 방법부터 알아보자. 순수 JDBC JDBC Template JPA 스프링 데이터 JPA 방법 1. 순수 JDBC - 고대의 개발자들이 고생고생한 방법. 그랬구나 하고 참고만 하자. - 순서 build.gradle 파일에 jdbc, h2 데이터베이스 관련 라이브러리 추가 + build gradle 스프링 부트 데이터베이스 연결 설정 추가 Jdbc 리포지토리 구현 DataSource를 통해 Connection을 연결한다. sql문을 작성한다. (String) PrepareStatement에 Connection과 sql문을 담음. PrepareStatement에 담긴 sql에 파라미터로 전달받은 값을 넣는다. PrepareStatement.excuteUpdate(..
- Total
- Today
- Yesterday
- DFS
- 시뮬레이션
- G5
- SWEA
- Spring
- 알고리즘
- react
- PriorityQueue
- S3
- g4
- 백준
- 구현
- 코딩새내기
- S2
- react native
- 우선순위큐
- 리액트 네이티브
- 자바
- laugh4mile
- 다익스트라
- 객체지향
- 그리디
- Spring Boot
- 백트래킹
- 문자열
- java
- BFS
- map
- 현꾸라지
- 리액트
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |