전체 글213 Dictionary A dictionary is a type of hash table, providing fast access to the entries it contains. Dictionary는 해시 테이블 자료구조 중 하나이며 빠르게 entry에 접근할 수 있다는 특징이 있습니다. Entry는 key와 value로 이루어져 있고, String 또는 number 형태인 key를 이용해 각 entry의 value를 가져올 수 있습니다. Value는 모든 타입이 다 가능합니다. 다른 중요 특징은 dictionary는 순서를 보장하지 않는다는 점입니다. 그렇기 때문에 dictionary 안의 데이터를 단순히 콘솔창에 찍어보면 매번 내부의 데이터의 순서가 다르게 나온다는 것을 알 수 있습니다. 또 다른 중요 특징으로는 중복된 .. 2022. 9. 28. Parameter 2 of constructor in ... that could not be found error Controller test를 하려는데 자꾸만 아래와 같은 에러로 인해 진행이 되지 않았습니다. @Component(@Service, @Repository 등 포함) annotation을 붙이지 않아 생기는 에러라고 하여 해당하는 클래스들을 다 확인했지만 annotation은 다 잘 설정되어 있었습니다. 그러다가 결국 알게된 원인은 해당 class를 @MockBean으로 등록(?)하지 않았기 때문이었습니다. 🥹 사실 문제를 일으켰던 bean들은 test code에서는 명시적으로 사용되지 않았기 때문에 @MockBean으로 필요할 것이라고 전혀 생각지 못하였습니다. 그런데 그 친구들을 등록해주니 해당 문제에서 벗어날 수 있었습니다. ㅎㅎ 혹시 동일한 문제로 고통받고 계신분이 있으시다면 도움이 되었으면 좋겠.. 2022. 9. 27. RestController 테스트 시 JWT 생성하기 Spring Security dependency가 적용된 상태에서는 unit test를 할 때도 security 관련 처리를 해주어야 합니다. 즉, 회원 인증 절차를 포함해주어야 합니다. (인증된 유저가 서비스를 이용한다는 가정) 만약에 인증 과정을 거치지 않으면 아래처럼 Unauthorized 에러가 발생합니다. 어떠한 방법으로 해결하면 되는지 찾아보니 @WithMockUser를 사용하면 된다는 것을 알게 되었습니다. 문서에 상세하게 사용법이 나와있는데, 기본적으로는 test하고자 하는 메서드 테스트 코드에 @WithMockUser만 붙여주면 된다고 합니다. 사용해보니 테스트 통과가 되더라구요. 하지만 특정한 username이나 password를 사용해서 인증을 하고 싶은 경우 혹은 권한을 달리하여 인.. 2022. 9. 20. @RequestParam 애노테이션 @RequestParam은 핸들러 method의 parameter 종류 중의 하나로, client 쪽에서 전송하는 요청 데이터를 Query Parameter 또는 Query String form-data x-www-form-urlencoded 형식으로 전송할 수 있게 해주는 annotation 입니다. 2022. 9. 12. @Import 애노테이션의 쓰임 예전에 문득 'XXXConfig.class 파일들이 굉장히 많아지면 관리가 힘들겠다' 라는 생각을 한 적이 있었습니다. 그런데 오늘 Spring 공식 문서를 살펴보다가 @Import 애노테이션이라는 것을 보았고, 이전에 의문을 가졌던 부분을 해당 애노테이션으로 어느 정도 보완이 된다는 것을 알게 되었습니다. 아래 예시는 공식 문서에 나온 예시입니다. @Configuration public class ConfigA { @Bean public A a() { return new A(); } } @Configuration @Import(ConfigA.class) //이 부분! public class ConfigB { @Bean public B b() { return new B(); } } 보면 ConfigB에.. 2022. 9. 11. @Nullable 사용 시 warning 발생 없애기 문제 프로젝트를 run 할 때 어느 순간부터 아래와 같은 warning이 발생해서 원인이 무엇인지 알아보았습니다. Warning:java: unknown enum constant javax.annotation.meta.When.MAYBE reason: class file for javax.annotation.meta.When not found 원인 @Nullable 애노테이션을 사용하면서 생기는 경고였는데, javax.annotation.meta.When 이라는 enum이 내 프로젝트 runtime에서 발견되지 않아서 나오는 경고였습니다. org.springframework.lang.Nullable이 해당 enum을 참조하는데 자동으로 그 enum이 생기지 않아서라고 하더라구요. 해결 build.grad.. 2022. 9. 9. .gitignore 파일에 등록된 파일이 이미 commit되어 있는 경우 프로젝트를 진행하다가 배포 시점이 되면서 .gitignore를 만들어 몇몇 파일들은 배포되지 않도록 지정해주었습니다. 그 후에 commit을 하려니 아래와 같이 unmerged files 때문에 commit이 되지 않는다는 에러가 발생했습니다. add . 를 하고 commit 시도를 다시해도 안되길래, 혹시나 하고 다른 브랜치로 checkout을 해보려고 했더니 역시 안되었습니다 ㅎㅎ .gitignore에 설정된 directory 중에 .idea가 있었는데, 먼저 기존에 commit 되어 있는 .idea 파일들을 내려주어야 한다고 해서 # Quit the merge git merge --abort # remove the whole folder from the repo git rm -rf --cached .. 2022. 9. 5. Spring 사용 시 DB를 H2에서 MySQL로 변경하기(JPA사용) In-memory DB인 h2를 사용하며 프로젝트를 구현하고 있었고 최종 배포의 시점이 다가오기 전에 미리 MySQL로 변경하게 되었습니다. 추가할 설정이나 변경사항이 많을까 싶었는데 다행히 상당히 쉬웠습니다! 사용한 Version 정보 Gradle 7.5 JDK 11 1. mysql에 접속해서 사용할 database 만들어놓기 정보를 저장할 DB를 설정해 줄 것이기 때문에 미리 사용할 database를 만들어 놓습니다. 2. build.gradle dependency 추가 원래 jpa를 사용하고 있었기 때문에 jpa dependency는 들어가 있었고, mysql dependency만 추가로 넣어주었습니다. dependencies { /* jpa */ implementation 'org.springfr.. 2022. 8. 31. LAN & WAN & TCP/IP & MAC에 대해 알아보기 왠지 모르게 네트워크 관련 부분은 들어도 헷갈리고 자꾸만 까먹게 되길래 기록해두기로 했습니다! 아무래도 눈에 확연히 보이는 것이 아니다 보니 더욱 그런 것 같습니다 😵💫 알기 쉽도록 제가 이해한 대로 풀어 설명해보도록 하겠습니다. (혹시 잘못된 내용이 있다면 알려주시면 감사하겠습니다.) 1. LAN (Local Area Network) LAN은 '지역 네트워크' 라는 의미로 작은 네트워크를 지칭합니다. 작은 네트워크라고 함은 보통 하나의 학교, 연구소나 캠퍼스 등과 같은 범위에 한정됩니다. LAN 안에서 컴퓨터 자원들(컴퓨터, 프린터, 서버, 라우터 등)이 서로 연결되어 있습니다. 케이블로 연결하는 것이 성능 상 좋지만 무선으로 연결도 가능합니다. LAN 내의 기기들은 switch에 Ethernet 케.. 2022. 8. 23. 이전 1 ··· 8 9 10 11 12 13 14 ··· 24 다음 반응형