전체 글(23)
-
Spring 순환참조 오류
최근 스프링에서 프로젝트를 구성하는 과정에서 순환참조 오류라는 처음보는 오류가 발생했다. postman으로 api테스트를 진행하던도중 postman콘솔에 오류메세지가 출력되지않고 멈춰버리는 현상이 나타났던 것이다. 깜짝 놀라 인텔리제이 콘솔에서 수많은 오류코드를 지나 다음과같은 챗바퀴같은 오류메세지를 볼수있었다. 순환참조가 발생하는 이유는 다음과도 같다. 스프링에서 순환 참조(circular dependency)란 서로를 참조하는 빈(Bean)이 발생하는 상황을 의미한다. 예를 들어 클래스 A가 클래스 B를 참조하고, 동시에 클래스 B가 클래스 A를 참조하는 경우 순환 참조가 발생하는 것이다. 이러한 순환 참조는 의존성 주입(Dependency Injection)을 사용하는 프레임워크에서 발생할 수 있는..
2023.12.12 -
프로그래머스 다음큰 숫자
같이 공부하는 팀원분이 진행하시다가 어려우셨던 문제가있었다. 처음에는 2진수로 입력값을 변환해서~~~1을 찾는 매우 복잡한 방식을 사용했으나 생각보다 더 간단하고 효율적인 방법이 있었는데, Integer.bitCount 함수였다. 위 함수는 숫자를 2진수로 변환하여 1의 개수를 카운트 해주는 함수인데 이를 사용할시 class Solution { public int solution(int n) { int answer = n; int originCnt = Integer.bitCount(n); while(true){ int bigCnt = Integer.bitCount(++answer); if(bigCnt == originCnt){ break; } } return answer; } } 입력 값을 반복문으로 증..
2023.11.16 -
Spring Ioc와 DI
IoC(제어의 역전이란 무엇일까?) 제어의 역전이란 쉽게말하면 말그대로 프로그렘의 제어 흐름이 역전되는 것이다. 이게 왜필요한걸까? 1. 코드 유지보수 용이성 제어의 역전은 의존성 주입을 사용하기 때문에 객체를 재사용하기가 변경에대한 유연성이 증가한다. 2. 낮은 결합 제어의 역전은 각 모듈간의 결합도를 낮추기때문에 객체에서 직접적으로 타 객체에 읜존성을 만들지 않고 외부에서 주입을 받아 의존성을 줄인다. 그렇다면 어떤게 강하게 결합된 코드고 분리방법은 뭘까? public class Consumer { void eat() { Chicken chicken = new Chicken(); chicken.eat(); } public static void main(String[] args) { Consumer c..
2023.11.13 -
Spring Api역할 분리에대해
지난주에 아프기도해서 오랜만에 til을 작성하게 되버렸다. 얼른 진도를 따라가야지 영차... API역할 분리 지난 주차에 만들었던 메모장 프로그렘의 가장큰 문제점은 모든 API가 단 한개의 class(Controller) 부분에서 구현되어 사용되고있다는 것이다! 이전 Java를 배울때 역시 기능분리야말로 현대 개발 환경에서 가장 중요한 요소중 하나일것이다. 좀더 다양한 기능이 추가되서 API수가 증가한다면 아마 코드를 직접 써내려간 나역시도 못알아보기 쉽상이니까. 특히 이전프로젝트에서 몇일 지나니까 이걸 왜 이렇게했지 저건 뭐였지... 찾게 되더라. Spring의 3 Layer Architecture 지금 내 프로젝트에는 이들중 단 한개 Controller Classes밖에 없다. 이제 컨트롤러에 있는 ..
2023.11.08 -
JAVA 배열의 주소의 개념..
배열의 기본적인 개념과 주소값 및 순서에 대한 이해는 하였는데.. 일반적인 변수를 복사하는것과 다르게, 배열에서는 깊은 복사 얕은 복사가 있는 것이었다. 얕은 복사 얕은 복사는 일반적인 변숫값을 복사할 때와 같이 int[]a={1,2,3,4}; int[]b=a; b[0]=3; 이런 식으로 사용하게 되면 문제가 발생하는 것이다. 두 번째 줄과 같이 b배열에 a배열을 복사하게 되면, 내부의 변수가 b배열에 고스란히 들어가는 게 아닌 b배열의 주소값이 들어가게 되어서 세 번째 줄과 같이 배열의 값을 변경 시에 같은 주소를 가리키고 있는 a배열의 0번째 값 역시 변경되어 버리는 것이다. 깊은 복사 이 문제를 해결하는 방법이 깊은 복사인데 내가 생각하기엔 그냥 일일이 붙이기에 가깝다. 쉽게말해 배열의 각 값을 ..
2023.10.18