git 이 꼬여서 최신의 코드를 확인할 수가 없다.. 어디서 부터 잘못된거지? [상황] develop 브랜치에서 pull 받음 -> 충돌 -> git rebase –continue -> 충돌 해결 -> git rebase -> 충돌 -> …-> 무한 반복 [원인파악] rebase를 하니 자꾸 같은 파일이...
Process와 Thread
Process : 컴퓨터에 연속적으로 실행되고 있는 컴퓨터 프로그램 Thread : 프로세스 내에서 실행되는 여러 흐름의 단위 멀티 프로세스 대신 멀티 쓰레드를 쓰는 이유는? = 프로그램을 여러개 실행할 바에는 하나의 프로그램에서 여러개의 작업을 한다.
PostConstruct와 Supplier Annotation
Annotation Spring을 사용하다보면 다양한 Annotaion을 사용하게 되는데 회사코드에서 처음보는 Annotation을 만나서 어떤 기능을 하는지, 왜 사용하는 건지 정리해보았다. @PostConstruct : DI(의존성을 주입) 한 이후에 실행되며 class 가 service로 올라가기 전에 실현된다. 한 클래스에서 하나의 메소드에만...
정리와 DIP
이제까지 배운 내용 객체 == 제공하는 기능 캡슐화: 외부영향을 최소화하기 위해 내부구현을 감춘다. 추상화: 공통된 기능을 interface로 빼서 상위클래스로 만든다. 구현시에는 그걸 상속받아서 구현한다. -> 상속을 하다보니 에러사항들이 생겨서 조립이 대안으로 도출됨 기능과 책임 분리 -> 적절히 분리하기 의존과 D...
기능과 책임 분리
기능 분해 하나의 기능(=책임)안에 세부적으로 기능을 나눌 수 있다. 각 분리된 기능들을 알맞게 나눠야 한다. 여기서 분배란, 기능을 하나의 클래스에서 다 구현하는게 아니라 객체클래스, service단, repository단으로 각 단계에 기능들을 알맞게 넣어준다. 위와 같이 분리했어도 점점 클래스, 혹은 메소드가 커지면 문제가 발생한다 -&...
의존과 DI
의존 기능구현을 위해 다른 구성요소들을 사용하는 것을 의미한다. (객체와 캡슐화 게시글 참고) 객체생성, 메소드 호출, 데이터를 사용하는것 모두를 의존한다고 표현한다. 의존하고 있다면 의존하는 대상이 변경될 경우, 그 변경이 전파될 가능성이 크다. (ex. 기존에 파라미터 3개 받던 메소드를 호출 -> 파라미터 2개로 변경 -> 호출했던 ...
상속보단 조립
상속 : 상속을 통해 상위클래스의 메소드들을 물려받고 거기에 메소드를 추가하는 식으로 상위클래스의 기능을 재사용, 확장하는 방법으로 활용한다. 추상화 : 비슷한 로직들을 따로 빼서 정의함 -> 메소드명만 보고도 어떤 기능을 하는지 대충 알 수 있어야 한다. -> 가독성을 높힌다. 상속 -> 아예 interface라서 상속을...
테스트 코드,, 그리고 마주한 4시간의 삽질,,
11.07 test코드 실행 에러(4h) test코드를 작성해서 실행했는데 에러가 나서 돌아가지 않는다.. 도대체 왜?.. 1. 외부설정을 불러오려 했으나 존재하지 않는다. @Value 를 통해 application.yml의 설정을 불러오고자 했으나 설정에 값이 존재하지 않아 계속해서 injection에러가 발생했다. application.yml에 ...
Exception
Exception API에 따라 세분화된 예외를 내려줘야한다. 단순히 4XX, 5XX 에러가 아니라 어느 Controller에서 어떤 예외가 발생했는지 세밀하게 예외를 내려줘야하는데 기존의 방식들(servlet 방식)은 그렇게 사용하기 힘들다. @ExceptionHandler : Spring에서 제공하는 예외처리 어노테이션 , 예외발생시 우선순위가...
다형성과 추상화
기존 게시글에서 “객체”란 “어떤 기능을 제공하는가” 로 정의했다. 그렇다면 객체지향에서 다형성이란 무엇일까? 다형성 이란? : 한 객체가 여러 타입(객체의 기능)을 갖는 것을 말하며 하나의 객체가 여러 객체의 모습을 갖는 걸 의미한다.(말 그대로 다형) 주로 상속을 통해 구현한다. 추상화 란? : 데이터나 프로세스 등을 의미가 비슷하거나 의미...