본문 바로가기

분류 전체보기270

@Bean vs @Component @Component와 @Bean 둘 다 Spring Container에 Bean을 등록하도록 하는 어노테이션으로 알고있다. 그렇다면 둘의 차이점은 뭘까? 궁금해졌다. @Bean 개발자가 컨트롤이 불가능한 외부 라이브러리들을 Bean으로 등록하고 싶은 경우 사용된다. (ObjectMapper의 경우 ObjectMapper Class에 @Component를 선언할 수 없으니, ObjectMapper의 인스턴스를 생성하는 메소드를 만들고 해당 메소드에 @Bean을 선언해 등록한다.) 메소드로 return 되는 객체를 Bean으로 등록해준다. ObjectMapper란? 기본 POJO 또는 범용 JSON Tree Model에서 JSON을 읽고 쓰는 기능과 변환 수행을 위한 기능을 제공한다. 또한 다양한 스타일의 .. 2020. 4. 8.
[프로그래머스] level 3 네트워크 (DFS, BFS) 문제링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 포인트 자기자신은 항상 연결되어 있으며 == 1 상호 연결되어 있는 경우 하나의 네트워크로 취급한다. DFS package programmers.dfsbfs; public class NetworkDfsRemind { public int solution(int n, int[][] computers) { //컴퓨터 개수, 네트워크 연결 정보 int answer = 0; //방문 여부 표시 boolean[] visited = new boolean[n]; for(int i=0; i 2020. 3. 28.
[프로그래머스] level 2 타겟넘버 문제 링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이(DFS) /* * 타겟 넘버 문제 설명 n개의 음이 아닌 정수가 있습니다. 이 수를 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다. -1+1+1+1+1 = 3 +1-1+1+1+1 = 3 +1+1-1+1+1 = 3 +1+1+1-1+1 = 3 +1+1+1+1-1 = 3 사용할 수 있는 숫자가 담긴 배열 numbers, 타겟 넘버 target이 매개변수로 주어질 때 숫자를 적절히 더하고 빼서 타겟 넘.. 2020. 3. 28.
동적 프로그래밍 기초 - 피보나치 수열(메모제이션) 코딩 인터뷰 완전 분석이라는 책에서 동적 프로그래밍 공부의 기초로 피보나치 수열 문제를 다뤘었다. 그 때 메모제이션이라는 기법으로 중복 호출되는 부분을 캐시처럼 저장하여 사용하는 방법이 있어서 한 번 훑고 넘어간 적이 있다. 그런데 딱 그 문제가 릿코드 https://leetcode.com/problems/climbing-stairs/ 에서 나왔다!! 리마인드 할 겸 정리하려한다. 기존의 피보나치의 경우 보통 이런 방식이다. public int climbStairs(int n) { if(n==0){ return 0; } if(n==1){ return 1; } if(n==2){ return 2; } return climbStairs(n-2) + climbStairs(n-1); } 하지만 이 피보나치의 재귀.. 2020. 3. 17.
[JPA] auto-increment 테스트 실패 원인 및 해결 기존에 각각 메소드 단위로 단위 테스트를 마치고 PR을 하여 Merge 되었던 소스가 있었다. 근데 이거 전체로 돌리니까 ID 값이 삭제가 안되었는데 ?? 응??? 다음날 바로 전체 테스트 케이스를 돌려보았더니 테스트가 깨졌다. 뭐지 merge..? 원인 분석 @After 어노테이션을 사용해 각 메소드를 테스트 할 때 마다 usersRepository.deleteAll() 하도록 설정을 해놓은 상태였다. delete 쿼리는 매 테스트 마다 잘 수행이 되었지만, 우리의 auto-increment Id님 께서는 1,2,3 순차적으로 증가를 하고계셨다. ㅎㅎ 이동욱님 블로그에서도 비슷한 사례로 Entity의 Id 칼럼의 GeneratedValue 전략을 GenerationType.IDENTITY 로 지정해 해.. 2020. 3. 3.
[JPA] Entity의 LifeCycle 백기선님의 Spring Data JPA 강좌를 참고하여 정리한 내용입니다. Entity의 상태 Entity의 상태에는 크게 4가지가 있다. Transient Persistent Detached Removed 각각의 상태 변화에 대해 알아보자 Transient : JPA가 모르는 상태 (단순 객체 생성) Account account = new Account(); account.setUsername("seokhun"); account.setTitle("JPA"); Persistent : JPA가 관리중인 상태 (1차 캐시, Dirty Checking, Write Behind) Session session = entityManager.unwrap(Session.class); session.save(accoun.. 2020. 3. 3.