스프링 프레임워크(Spring Framework) 하면 반드시 알아야 하는 개념이 바로 DI, IoC이다. DI는 의존성 역전으로, 클린 아키텍쳐를 읽으면서도 많이 배우고 개념을 다져왔는데, IoC에 대해서는 아직 잘 모르는 것 같아서 따로 정리해본다. IoC는 스프링 뿐만 아니라 다른 프레임워크에서도 사용되는 범용적인 개념이다. 왜 IoC라는게 생겼을까? 무엇을 제어하고 왜 역전이 필요한 것인지, 천천히 알아보자. IoC의 Control, 제어란? 여기서 제어라는건 "객체에 대한 주도권을 가지고 있다"라고 생각하면 좋다. 자바는 객체지향 프로그래밍 언어이고, 모든 객체는 생명주기(Life Cycle - 객제가 생성된 후 부터 폐기될 때까지의 기간) 를 가지고 있다. 일반적으로 프레임워크를 사용하지 않는..
Spring으로 개발을 하다보면 @Bean과 @Component를 언제 써야할지 헷갈릴때가 있다. 둘다 목적이 명확하지 않은 Bean을 생성할때 사용하는 어노테이션인데, 정확히 차이를 짚고 넘어가보자. @Bean VS @Component (@Bean) (@Component) 위 예시처럼, @Bean의 경우 개발자가 컨트롤이 불가능한 외부 라이브러리들을 Bean으로 등록하고 싶은 경우에 사용된다. (예를 들면 ObjectMapper의 경우 ObjectMapper Class에 @Component를 선언할수는 없으니 ObjectMapper의 인스턴스를 생성하는 메소드를 만들고 해당 메소드에 @Bean을 선언하여 Bean으로 등록한다.) 개발자가 생성한 Class에 @Bean을 선언하는 것 또한 불가능하다. 개..
Java와 Spring으로 개발을 하다 보면 Bean이라는 개념이 자주 등장한다. 자주 사용하는 용어이지만 제대로 정리하고 넘어간 적이 없는 것 같아서, 한번 깔끔하게 정리하고 넘어가야 할 것 같았다. Java Bean 먼저 Java Bean에 대해 알아보자. 결론부터 말하자면 Java Bean은 특정 형태의 클래스를 가르키는 뜻으로 사용된다. DTO 혹은 VO의 형태가 Java Bean이라고 생각하면 쉽다. [백엔드 기술 면접 대비] - 1. DAO, DTO, VO란? 오늘은 데이터 컨트롤의 기초라고 볼 수있는, 데이터 객체들에 대해 한 번 짚고 넘어간다. DAO(Data Access Object)란? 말 그대로, 데이터베이스의 데이터에 접근하기 위한 객체이다. 비즈니스 로직에 kangmanjoo.ti..
오늘은 데이터 컨트롤의 기초라고 볼 수있는, 데이터 객체들에 대해 한 번 짚고 넘어간다. Entity란? Entity는 도메인 모델 객체로서, 실제 테이블과 매핑되어 변경 될 시 다른 여러 Class에 영향을 미치게 된다. Entity는 다음 특징들이 있다. DB의 테이블과 1대 1로 대응된다. DB의 테이블이 가지지 않은 칼럼을 필드로 가져선 안된다. 다른 클래스를 상속받거나 인터페이스의 구현체여서는 안된다. Setter 사용을 지양한다. 여기서 Setter 사용을 지양하는 이유는 , Setter의 사용이 Entity의 일관성을 해칠 수 있기 때문이라고 한다. 따라서 Setter 대신 다른 방법으로 필드에 값을 넣어 주는 것이 좋다. 또한 Entity를 생성할 때는 Builder 패턴을 사용하는 것이 ..
문제점 WSL 2 consumes massive amounts of RAM and doesn't return it · Issue #4166 · microsoft/WSL Your Windows build number: 18917 What's wrong / what should be happening instead: WSL 2 starts using huge amounts of RAM after a while, just using it like normal. At the moment I'm using ph... github.com WSL을 사용하고, 이 글 까지 읽게 된 사람들은 모두 공감하겠지만 WSL이 램을 잡아먹는 비율은 어마어마하다. 이러한 현상은 WSL2의 특성과 리눅스의 특성의 환상의 콜라보로 인..
오늘은 프로그래밍 용어 중 비즈니스 로직(Business Logic)에 대해 알아보겠다. 비즈니스 로직이란? 비슷하게 도메인 로직이라는 말이 있는데, 사실상 도메인 로직과 비즈니스 로직은 동의어라고 볼 수 있다. 소프트웨어 공학에서 도메인, 비즈니스라는 말은, '소프트웨어가 풀고자하는 현실 세상의 문제'를 가리킨다. 예시로, 은행 앱이라면, 금융 및 은행 업무가 도메인이다. 은행 앱이 해결하고자 하는 문제가 금융 업무를 스마트폰에서 처리할 수 있게 해주는 것이므로. 틱톡 같은 SNS라면 동영상 촬영, 감상, 댓글 및 공유일 것이다. SNS가 해결하고자 하는 문제는 우리가 공유하고자 하는 사진, 영상을 누구든 볼 수 있게 하는 것이므로. 반대로 공학/기술적인 문제에 속하는 것들은 대개 '도메인'과는 구별된..
깃으로 코드관리를 하고 협업을 할 때, 커밋과 PR은 매우 중요하다. 다른 사람이 코드를 어떻게 썼는지가 직관적으로 보이고, 어떤 작업을 했는지를 쉽게 알 수 있게 해준다. 그러나 이러한 장점을 살리려면, 커밋 메세지와 PR 내용을 직관적이고 자세하게 써주어야 한다. 커밋 메시지 예시 Feat: "게임 기능 구현" -> 제목 date: 23/10/24 -> 커밋을 작성한 날짜 (선택) 1.게임의 시작 , 종료 기능 구현 -> 본문 2.게임 재시작 기능 구현 -> // 3.신규 기능 테스트 코드 추가 -> // Resolves: #67 -> 꼬리말 (해결된 이슈) Ref: #64 Related to: #33, #34 -> 꼬리말 (관련된 이슈) 커밋 메시지는 제목과 본문으로 나누어서 작성한다. 제목으로 설..
github에서 id/pw인증이 막힌 후로, 대부분의 사람들은 보통 ssh 인증을 이용한다. 그러나 github 프로필에 등록된 ssh 키를 다른 repository에서도 사용하고자 하면, Key is already in use에러가 뜬다. 이러한 문제는 private repository에 ssh키를 등록하여 젠킨스 연동등의 작업을 해야할 때 발생한다. 따라서 이 때에는, 해당 repository용 ssh 키를 새로 발급받아주어야한다. 만약 sshkey가 없는경우, 터미널에 다음과 같이 입력한다 ssh-keygen 그러면 default로 id_rsa(개인키), id_rsa.pub(공개키)가 ~/.ssh 폴더에 생성된다. 만약 sshkey가 이미 존재하는 경우 다음과 같이 입력한다. ssh-keygen -..