일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- redis
- 자바 ORM 표준 JPA 프로그래밍
- Real MySQL
- SpringBoot
- MSA
- IntellJ
- JPA
- 자바
- 보조스트림
- GC
- Stack
- list
- thread
- K8s
- Stream
- Kotlin
- jvm
- 토비의 스프링
- OS
- gradle
- spring
- 스프링
- Java
- mysql
- 백준
- 쿠버네티스
- Collection
- 토비의 스프링 정리
- 스트림
- 이스티오
- Today
- Total
목록Spring (38)
인생을 코딩하다.

1장, 오브젝트와 의존관계 p.64) 프로그래밍 기초 개념 중에 관심사의 분리라는 게 있다. 이를 객체지향에 적용해보면, 관심이 같은 것끼리는 하나의객체 안으로 또는 친한 객체로 모이게 하고, 관심이 다른 것은 가능한 한 따로 떨어져서 서로 영향을 주지 않도록 분리하는 것이라고 생각할 수 있다. 리팩토링은 기존의 코드를 외부의 동작방식에는 변화 없이 내부 구조를 변경해서 재구성하는 작업 또는 기술을 말한다. 공통의 기능을 담당하는 메소드로 중복된 코드를 뽑아내는 것을 리팩토링에서는 메소드 추출 기법이라고 부른다. p.67) 기능의 일부를 초상 메소드나 오버라이딩이 가능한 protected 메소드 등으로 만든 뒤 서브 클래스에서 이런 메소드를 필 요에 맞게 구현해서 사용하도록 하는 방법을 디자인 패턴에서 ..

스프링은 자바 엔터프라이즈 애플리케이션 개발에 사용되는 애플리케이션 프레임워크다. 애플리케이션의 바탕이 되는 틀과 공통 프로그래밍 모델, 기술 API 등을 제공해준다. 애플리케이션의 기본 틀 - 스프링 컨테이너 스프링은 스프링 컨테이너 또는애플리케이션 컨텍스트라고 불리는 스프링 런타임 엔진을 제공한다 스프링 컨테이너는 설정정보를 참고로 해서 애플리케이션을 구성하는 오브젝트를 생성하고 관리한다. 스프링 컨테이너는 독립적으로 동작할 수도 있지만 보통 웹 모듈에서 동작하는 서비스나 서블릿으로 등록해서 사용한다. 공통프로그래밍 모델 - IoC/DI, 서비스 추상화, AOP 프레임워크는 애플리케이션을 구성하는 오브젝트가 생성되고 동작하는 방식에 대한 틀을 제공해줄 뿐만 아니라, 애플리케이션 코드가 어떻게 작성돼야..

프로젝트를 시작하며, build.gradle에서 gradle plugin과 관련하여 implementation의 의미가 궁금하였다. implementation 'org.springframework.boot:spring-boot-starter-data-jpa' 이리저리 오픈소스들을 보며 위의 implementation plugin외에 compile 'org.springframework.boot:spring-boot-starter-data-jpa' compile(Api) plugin도 볼 수가 있었다. 대략 `implementation`는 상속과 관련이 있다고 추측하고 있었고, `compile`은 컴파일 시에 추가되는 의존성이라고 추측하고 있었다. 추측만 하고있어서 확신을 해보고자 Gradle 공식 문서를 ..

Servlet 웹 애플리케이션을 만들 때 필요한 인터페이스 Spring web MVC spring : Spring Framework에 있는 모듈 web : Web Service를 만들때 필요 MVC : MVC 패턴을 사용해서 (Model View Controller) 그리고 이 Spring web MVC가 Servlet를 사용하게 된다. Servlet은 왜 생겼을까? 정적 데이터만 전달하는 Web Server 처음에 웹 프로그래밍인 정적 데이터만 전달할 수 있었다. 어떤 사용자가 들어와도 Hello.html만 줄 수 있었다. 그래서 사용자(요청)에 따라 다른 처리를 해줄 수 없었다. 동적인 처리를 해주는 웹 애플리케이션이 없었다. 그래서 나온게 CGI다. 동적인 데이터를 처리하는 CGI, Web Serv..

AOP(Aspect-Oriented Programming)란? "형일, 회원가입 하는 시간 측정해서 로그로 남겨줄 수 있어요?" 난 회원가입 하는 서비스로 가서 시간을 측정해본다. 이렇게 객체로 분리하여 시간 측정을 하게된다. 그리고 log가 남는 것을 확인 할 수 있다. 그런데 이렇게 메서드에 스탑워트 기능을 추가하면 뭔가 이상하다. 스탑워치라는 시간을 재는 기능을 만들긴 했는데 서비스에 이 로직이 들어가는게 맞을까? 사실 여기서 필요한 핵심 로직은 위에 빨간색 박스에 있는 로직 아닐까? SRP에서 클래스를 변경하는 이유는 하나라고 했는데 여기에 서비스 로직 말고 위의 빨간 박스에 있는 로직들 처럼 부가기능이 들어간 것 같다는 생각을 할 수 있다. 사실 서비스에서 필요한 내용은 비즈니스 로직이라고 불리..
Spring 프레임워크는 자바 엔터프라이즈 애플리케이션을 개발하기 위한 프레임워크다 즉, 기업들에게 애플리케이션을 보다 쉽게 개발할 수 있도록 서비스를 제공한다 어떻게? 데이터베이스 연동이나 다른 시스템과의 연동같은 복잡한 로직을 분리시켜개발자가 비즈니스 로직 에만 신경쓰도록 만들어주는 핵심 기능이 IOC와 DI다. IOC (Inversion of Control) 제어의 역전 개발자가 아닌 프로그램이 코드의 흐름을 제어하는 것 프로그램의 제어 흐름을 직접 제어하는 것이 아니라 외부에서 관리하는 것을 제어의 역전(IoC)이라 한다. public class HyungIl{ private Child child; public HyungIl(){ this.child = new Hosick(); } public v..

Domain 레이어란? 1. Domain - 저장소와 밀접한 중심 도메인을 다루는 계층은 더 견고하고 특별하게 격리되고 관리되어야 하기 때문에 반드시 분리되어야 한다. 즉, JPA를 기준으로 한다면 테이블과 맵핑되는 Class들 - 이 계층은 오로지 도메인에만 집중하고, 어떠한 도메인이든 그 도메인이 가져야할 서비스와 무관한 도메인의 비즈니스가 있다. 2. Repository - 도메인의 CRUD 역할을 한다. 여기서 주의할 점은 모든 CRUD 역할을 이곳에서 하는 것이 아니다. 이 모듈은 시스템에서 가장 보호받아야 하며 가장 견고해야 할 모듈이므로, 이 모듈에서 CRUD에 관한 정의를 작성할때 많은 고민을 해야한다. - 예를 들어 시스템 도메인에 관한 통계를 기능으로 추가한다고 했을 때, 이는 시스템이..

통합테스트 장점 모든 빈을 올리고 테스트를 진행하기 때문에 운영환경과 가장 유사하게 테스트 가능 API를 테스트 할 경우 요청부터 응답까지 전체적인 테스트 진행 가능 단점 모든 빈을 올리고 테스트를 진행하기 때문에 테스트 시간이 오래걸리고 무거움 테스트의 단위가 크기 때문에 테스트 실패시 디버깅이 어려움 외부 API 콜 같은 Rollback 처리가 안되는 테스트를 진행하기 어려움 단위테스트 장점 TDD 의 첫 단계의 기능 단위의 테스트 코드 작성 단위테스트를 진행하면 여러 문제점들을 사전에 차단하여 더 빠른 오류 검증 및 수정을 빠르게 해결 가능 단점 아래 참고 테스트 격리 : 테스트를 서로 격리하여 한 테스트를 실행해도 다른 테스트에 영향을 주지 않도록 해야한다. 즉, 테스트는 순서에 상관없이 독립적으..