본문 바로가기
반응형

공부/프로그래밍346

[springboot, msa] gateway 서버에 Filter에서 던져진 Exception 핸들링하기 msa 에서 gateway 서버를 두면 여러 기능을 할 수 있는데, 그중 하나가 바로 인증하는 기능을 추가하는 것이다. Spring security 를 사용하면 자동으로 인증하는 부분이 들어가거나 조금 수정해서 등록할 수 있는데, 여기서는 Spring Security 를 사용하지 않는다. 그 이유는,  1. gateway 서버는 webflux로 움직이기 때문에 설정하는 부분이 다소 복잡하고2. spring security 를 인증기능만 넣기에는 무겁다고 느껴지기 떄문이다.  내 경우는 후자가 더 컸기 때문에 인증을 코드를 통해 직접 구현하는걸 하려는데, 그러다보니 WebFilter 를 상속하여 직접 구현하는 걸 선택했다. @Slf4j@Component@RequiredArgsConstructorpublic.. 2024. 12. 7.
Flutter 앱 개발 시리즈: SQLite 데이터베이스 다루기 + 버전관리 모바일 앱 개발에서 로컬데이터베이스 활용을 하려는데 SQLite를 쓰기로 했다. 항상 서버사이드에서 다루다가 앱에서 다루려니까 미숙한 부분이 있는데, 테이블을 직접 만들어줘야 하고, 그 DDL을 앱 설정에 포함되어야 한다는 점이다. 우선 SQLite를 쓰면서 순서대로 살펴보도록 하자.  SQLite 테이블 설계시 주의사항SQLite는 다른 RDBMS와 달리 동적 타입 시스템을 사용한다. 이게 어떤의미냐면 VARCHAR나 INT를 지정할떄 자릿수 등을 명확히 정해야하는 그런 것을 하지 않아도 된다는 점이다. 그로인해 유연한 데이터 저장은 가능하겠지만, 단점은 타입 불일치로 인한 버그 발생 가능성이 높아진다. 또한 서버사이드에서 다루는 데이터베이스인 Mysql이나 PostgreSQL등은 테이블을 미리 만들어.. 2024. 11. 28.
Flutter 앱 개발 시리즈: Riverpod과 비동기 데이터 초기화 문제 해결하기 들어가며Flutter로 앱을 개발하다 보면 앱 시작 시 여러 데이터를 동시에 불러와야 하는 상황이 자주 발생한다. 특히 로컬저장소, SQLite, API 등 여러 데이터소스를 활용할때는 더욱 그렇다. 오늘은 앱을 개발하면서 마주친 비동기 초기화 문제와 그 해결 과정을 공유하려 한다.  문제상황최근 개발중인 사진 앱에서는 시작 시 두가지 데이터를 불러와야 했다.로컬 파일 시스템의 파일 정보SQLite 데이터베이스에 저장된 ID 정보  처음에는 단순하게 다음과 같이 구현하였다.class HomeScreen extends ConsumerStatefulWidget { @override ConsumerState createState() => _HomeScreenState();}class _HomeScreenS.. 2024. 11. 27.
[springboot 3.x, querydsl] QClass 생성 및 경로 설정 springboot 2.x 와 달라진점이 있다면 plugins 에 편의상으로 추가했던 다음항목을 사용하지 못하면서 문제가 시작된다. id "com.ewerk.gradle.plugins.querydsl" version "1.0.10" 위 플러그인을 사용하면 compileQuerdsl 이라는 Task 가 생기고 실행하면 QClass 를 정해진 위치에 생성한다. 그래서 querydsl 을 사용하는데 경로에러 등이 발생하지 않는다. 그런데 이 플러그인을 사용하지 못하면서 task에 직접 설정을 추가해야 한다. 우선 설정 완성형을 먼저 공개하고, 이후 왜 이렇게 설정이 되었는지 설명하고자 한다 plugins { id 'java' id 'org.springframework.boot' version '3.0.5' i.. 2023. 3. 31.
springboot Test 중에 403, 401 에러가 날때(spring security) Spring Security 가 구성되어 있는 프로젝트에서 Controller 테스트를 하다보면 인증때문에 에러가 난다. WebMvcTest로 수행했다 하더라도 Security 는 Filter 영역에 추가되는 것이기 때문에 그렇다. WebMvcTest를 사용하게 되면 내가 설정한 Spring Security Configuration 들을 불러오지 않고 최소한의 것들을 넣기 때문에 내가 필터한 URL도 모두 무시하게 되서 403, 401 에러가 나게 되는 것이다. 일단 이 상황에서 2가지 방법이 있는데 mockMvc에 .with(SecurityMockMvcRequestPostProcessors.csrf()) 를 추가 클래스에 @AutoConfigureMockMvc(addFilters = false) 추가 .. 2023. 3. 22.
[Linux] 젠킨스(jenkins) 포트번호 변경 이전에 리눅스에 젠킨스를 설치하면서 포트번호 수정하는걸 추가했는데, 요즘 버전에 이게 안되는 경우가 있다. https://lemontia.tistory.com/656 [Linux] centos7 젠킨스 설치 1. jenkins repository를 설정파일을 생성wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo 2. /etc/yum.repos.d/jenkins.repo 경로에 파일을 다운로드 받았는지 확인하고 있으면 아래 실행rpm -- lemontia.tistory.com 확인해 봤더니, systemctl 로 시작할때 스크립트 안에 포트번호를 파라미터로 주는게 있고, 그게 적용되서 안되는 것을 확.. 2023. 3. 20.
반응형