Development50 스프링부트 3.0이상 Spring Security 기본 세팅 (스프링 시큐리티) 목차 [수정 사항] 2023-03-29 : 커스텀 어노테이션 적용하는 부분에서 소스코드에 잘못 들어간 코드가 있어서 삭제 2024-01-12 : SpringSecurityConfig 클래스의 코드에 어노테이션 빠져 있던 부분 추가 1. 시작하기 전에 1.1 설정 이해 보다는 당장 시큐리티 설정 복붙이 필요한 분들에게 이하 글에서는 import 를 제외하고 작성했고, 코드들이 글에 작성되어 있다보니 완전 초보라면 이해하기 힘들 것 같습니다. 또는 당장 급하게 복붙할 스프링 시큐리티 기본 세팅이 된 프로젝트를 찾는 경우도 있을겁니다. 그러니 우선 예시 프로젝트를 첨부합니다. 이 글은 이하의 예시 프로젝트를 만들기 위해 세팅하는 과정을 다룹니다. - 프로젝트 (스프링부트 3.0.2 기준) : github (m.. 2023. 2. 10. 스프링 부트 2.0에서 3.0 스프링 시큐리티 마이그레이션 (변경점) 목차 스프링 부트 3.0 부터 스프링 시큐리티 6.0.0 이상의 버전이 적용되었습니다. 스프링 부트 2.7.8 까지는 deprecated는 되었더라도 기존 설정대로 대부분 사용 가능했으나, 스프링 부트 3.0 부터는 아예 삭제된 부분들이 있어서 마이그레이션 시 주의할 부분(변경점)에 대해 다룹니다. - 스프링 부트 2.7 이하 스프링 시큐리티 기본 세팅 : 링크 - 스프링 부트 3.0 이상 스프링 시큐리티 기본 세팅 : 작성중 0. 스프링 시큐리티 설정 마이그레이션 예시 완전히 동일한 세팅은 아니지만, 스프링 부트 2.6 기반으로 작성된 기본 세팅 코드와 스프링 부트 3.0 기반으로 작성된 기본 세팅 코드 입니다. 이하에 나올 변경점들이 적용되어 있는걸 코드로 볼 수 있습니다.(각각 위 2.7 이하 기본.. 2023. 2. 9. 자바 날짜 관련 코딩 시 Date와 Calendar를 쓰지 마세요! 결론 : 날짜 관련 코드짤 때 Date, Calendar 쓰지 마세요! Date(jdk 1.0), Calendar(jdk 1.1) 클래스의 문제점 - 불변 객체가 아님. setter가 존재하므로 Calendar나 Date 객체가 여러 객체에서 공유되면 한 곳에서 바꾼 값이 다른 곳에 영향을 미칠 수 있음. - int 상수 필드의 남용. CalendarSECOND 같은 상수 필드때문에, 여기에 Calendar.JUNE 같은 엉뚱한게 들어가도 컴파일 시점에 확인할 방법이 없음. - 헷갈리는 월 지정. Date 클래스에서 1월을 0부터 표현하며, Calendar에서도 마찬가지. 따라서 1582년 10월 4일은 다음과 같이 작성해야 하며 당연히 휴먼에러가 많이 나옴. calendar.set(1582, 9, 4).. 2023. 2. 6. 인텔리제이 JUnit 테스트 리포트 한글 깨짐 해결법 문제 인텔리제이에서 JUnit5를 사용해 테스트 돌릴 시 한글로 설정해둔 DisplayName이 깨져서 나왔다. @DisplayName("생성함") 해결법 1. shift를 두 번 눌러준다. 2. "edit vm" 쳐줘서 저거 눌러준다. 3. 이하의 문구를 추가해준다. -Dfile.encoding=UTF-8 4. 인텔리제이를 껐다킨다. 5. 다시해보면 잘 뜬다. 2022. 12. 15. 스프링부트 3.0.0 프로젝트 생성시 에러 해결법 (인텔리제이) 스터디용 프로젝트 하나 파는김에 새로나온 스프링부트 3.0.0으로 해보려 했다. 그런데 아래와 같은 에러가 발생했다. A problem occurred configuring root project 'java-test-practice'. > Could not resolve all files for configuration ':classpath'. > Could not resolve org.springframework.boot:spring-boot-gradle-plugin:3.0.0. Required by: project : > org.springframework.boot:org.springframework.boot.gradle.plugin:3.0.0 ... 얼핏 스프링부트 3.0.0 변경점 찾아봤던 것에서.. 2022. 12. 15. 인텔리제이 StringTokenizer - NoSuchElementException 문제 해결 방법 (IntelliJ 2022.1.1) 인텔리제이를 현재 기준 가장 최신버전인 2022.1.1로 업데이트 시, StringTokenizer가 정상적으로 동작하지 않는다. 복사-붙여넣기를 하면 동작하지만 직접 작성 시 아래와 같은 에러가 뜬다. 일반적으로 잘 사용하는 클래스는 아니지만, 알고리즘 문제를 푸는 사람들이라면 상당히 난감한 상황이다(인텔리제이 2022.1.1에서만 그렇고, 자바 버전을 변경해도 동일한 것으로 보아 인텔리제이에서 입력받는 로직이 뭔가 변경된 등의 문제가 있는 듯하다.) 원론적인 해결은 못했지만, 방법이 있다. 바로 직전 버전인 2022.1으로 재설치하면 된다. https://www.jetbrains.com/idea/download/other.html Other Versions - IntelliJ IDEA Get past.. 2022. 5. 26. [토이프로젝트] 죽은 서버 재시작 시켜주는 프로그램 (dead-server-restarter) 토이라고 하기도 뭐한, 단순히 필요에 의해 만들어진 간단한 프로그램이다. 로드밸런서에서 각 서버를 체크하듯이 등록된 서버에서 응답이 있는지 주기적으로 체크한다. 다만 추가로 응답이 없을 시 등록된 sh 또는 bat을 실행해주는 프로그램이다. 물론 안죽는게 가장 좋겠고, 서버 자체를 디버깅해서 안죽게 만드는게 가장 좋겠다. 하지만 이미 새로 만들고 있어 현상유지만 해주면 되거나, 코드를 얻을 수 없는 레거시 코드인 경우엔 새로 만드는 동안 그냥 무지성 재시작이 더 이득일 수 있다. 아무튼 그런 역할이다 ㅋㅋ 일단 1차로 만들어두긴 했는데, 무겁게 만들긴 싫었으므로 그냥 기본 자바로 제작했다. 다만 차후 확장성을 좋게 하기 위해 gradle만 붙였다. 코드는 이하 깃헙 링크에 있다. 설정 및 사용방법도 이하.. 2022. 4. 10. 스프링부트 MyBatis에서 파라미터 여러개 넘기기 (parameterType) 사실 Map 형태로 되어있는 프로젝트라면 모든 Map들을 합쳐서 보내면 되니 별 문제가 없다. 내 경우엔 사용자로 부터 컨트롤러로 들어오는 dto가 여러 종류일 때, 그 종류와 상관없이 동일한 형태로(각 dto에 상응하는 entity를 하나씩 만들고 싶지 않았다) MyBatis에 보내고 싶었다. 또한 해당 요청의 uri도 자동으로 넣어졌으면 좋겠고, JWT+스프링 시큐리티로 AuthenticationPrincipal에 넣어둔 인증된 사용자의 id가 있는 UserInfo도 자동으로 들어가게 하고 싶었다. 즉, 여러 uri를 가지는 컨트롤러들어 있고 각 컨트롤러마다 사용자로부터 받는 dto 클래스가 다르다. 이 때 유저정보, uri, dto를 한꺼번에 물고 MyBatis에 보내고 싶었다. 그래서 다음과 같이.. 2022. 2. 18. rsync를 사용해서 Synology NAS로 데이터 자동 백업하기 (리눅스용) rsync를 사용해서 시놀로지NAS(이하 NAS)에 로컬 혹은 서버의 데이터를 백업하는 방법에 대해 작성한다. 목차 [ Synology NAS 설정 ] 1. 주의점 Synology NAS에서는 quickconnect로 로컬망에 있는 NAS도 외부에서 쓸 수 있도록 해준다. 하지만 rsync를 통한 백업의 경우 quickconnect로 불가하므로, 외부망에서 사용하려면 별도로 작업이 필요하다. 2. NAS에서 rsync 서비스 활성화 NAS 관리자 권한 계정으로 접속 후 '제어판 -> 파일 서비스 -> rsync -> rsync 서비스 활성화 및 포트 작성' 외부망에 열려있는 NAS라면 특히 포트는 기본 포트보다는 변경하는것이 좋다. 3. 백업용 유저 생성 기존 유저로 해도 되겠지만, 아무래도 백업용으로 .. 2022. 2. 8. JS ES6~ES12 에서 추가된 주요 문법들 (모던 리액트 이해에 필요한 ECMA Script ES6~ES12 문법들) 현재 리액트를 공부중이다. 그런데 너무 생소한 문법들이 많았다. 처음엔 리액트만의 문법이겠거니 생각했는데, 찾아보니 자바스크립트에서 ES6 이상에서 추가된 문법들이 대부분이었다. 그래서 모던 리액트 문법을 이해하는데 필요한 ES6~ES12에서 추가된 문법들과, 딱히 리액트와 관련 없더라도 유용해보이는 ES6~ES12 문법을 정리해봤다. 특히 ES6에 새로운 문법들이 많다. Contents [ ES6 (ES2015) ] 1. const, let 1.1 var ES6이전에 사용하던 var는 함수 스코프 변수이다. 그래서 일반적인 다른 언어들과는 동작 방식 자체가 다르다. 보통 함수내에 변수를 선언하고, if나 for, while 등을 사용한다면 일반적으로 별도의 스코프 영역을 가질거라 예상하지만 var로 사.. 2022. 1. 15. 이전 1 2 3 4 5 다음