분류 전체보기
Spring 설정파일 우선순위
Spring 설정파일 우선순위
2023.04.11Application.yaml 설정 파일 실행시 우선순위 매번 까먹어서 한번 재대로 정리해봄 default 셋업 아래에 on-profile 설정되어있는데 안먹어서 왜 안먹나 했더니 application.yaml이 우선순위가 높아서 default 옵션을 무시하고 다른 옵션이 들어가버려서 안되길래 도대체 어떤식으로 해결해야하는지 확인해봤다. 이경우에는 application.yaml에 profile이 있으면 됨 혹은 아예 파일이 따로 존재한다던지 여러가지 방법이 존재하니 참고 Application.yaml은 다음과 같은 우선순위를 가지게된다. 1. [Application properties](https://docs.spring.io/spring-boot/docs/current/reference/html/fea..
전체 쿠키 날리지 않고 티스토리 400 Bad Request 해결하기
전체 쿠키 날리지 않고 티스토리 400 Bad Request 해결하기
2023.03.22꽤 오랜 기간동안 오류가 발생했는데... 400 에러는 꽤 오래전부터 발생했긴했다.. 구글 검색을 찾아보면 대충..한 작년 12월쯤 부터인가 9월부터인가 로그인하게 되면 아예 400 Bad Request가뜨면서 오류가 발생했다. 해결법 자체는 많은데, 대부분 전체기록 삭제를 추천해주기 때문에 나는 그 방법 말고 다른 방법을 추천한다. (왜냐하면 다 날려먹는 바람에 로그인을 일일히 다시 해야하는게 너무 귀찮음) 해결방식 주소 옆의 좌물쇠 클릭 →쿠키 클릭 티스토리와 관련한 모든 쿠키 삭제! 주소명 클릭하고 삭제하면 되는 구조! 단, 이후에도 400 Error 동일하게 발생시 Kakao.com 관련 쿠키도 삭제해야함. 이 경우는 아마 나와 비슷한 상황일 가능성이 높음. 현재 나는 티스토리를 Kakao 로그인..
Spring boot 3.0.0 SQL Basic Binder 로깅 안되는 문제 해결기
Spring boot 3.0.0 SQL Basic Binder 로깅 안되는 문제 해결기
2022.12.02스프링부트에서 SQL문을 로깅하자 JPA에서 sql문 로깅하기 위해서는 application.yml에서 로깅레벨이나 옵션 사용해서 문제해결을 한다. spring: jpa: properties: hibernate: format_sql: true use_sql_comments: true logging: level: org.hibernate.SQL: debug org.hibernate.type.descriptor.sql: trace 이러면 JPA를 통해서 만들어지는 SQL문을 확인해볼 수도 있고… SQL문에서 발생하는 ?를 통해 들어가진 값들도 확인이 가능하다. 아래는 2.7.6 Spring boot 버젼입니다. 아래는 3.0.0 Spring Boot 버젼입니다. Spring Boot 3.0.0 버젼으로 넘어..
JWT Expired 시간이 토큰 발급시간보다 이전 시간인 경우
JWT Expired 시간이 토큰 발급시간보다 이전 시간인 경우
2022.08.18문제 상황 JWT 토큰 발급시 이런 오류가 있었다. JWT_EXPIRED_TIME: 43200 (24시간 * 60분 * 30일) ⇒ 해서 나온값이 43200분이었고, 위와 같은 설정값을 통해서 아래의 설정으로 세팅으로 토큰을 발급 하려고 했었는데.... return Jwts.builder() .setClaims(claims) .setIssuedAt(Date()) .setExpiration(Date(System.currentTimeMillis()+(JWT_EXPIRED_TIME.toInt()*60*1000))) .signWith(getSignKey(), SignatureAlgorithm.HS256) .compact() …? 원래시간보다 오히려 줄었다? iat보다도 숫자가 꽤 작은걸 확인할 수 있는데, 단순..
Spring RestDocs를 통한 Swagger 페이지 구축기 - 1. 구성하기
Spring RestDocs를 통한 Swagger 페이지 구축기 - 1. 구성하기
2022.07.24테스트 코드로 API docs 관리를 할 수 있다고? Spring Rest Docs 라이브러리는 테스트 코드를 작성하면 Asciidoc 파일을 통해서 테스트 코드를 구현할 수 있다. 하지만, 불편한 점들이 눈에 밟혔다. Asciidocs 파일에 대한 이해도가 반드시 필요했으며, Rest Docs가 기본적으로 제공하는 Docs 제공 하는 페이지가 나랑 취향이 너무 안맞았다. 솔직히 보면서 이렇게 까지 써야할까라는 생각을 했었는데… 웹사이트를 뒤적뒤적 거리다 마침 RestDocs 테스트 코드를 바탕으로 Swagger 문서를 구성할 수 있는 라이브러리를 찾아, 그 기능을 사용해보기로 했다. 구축기 가장 본 바탕이 되었던 이 레포지토리를 기준으로 개발 환경 세팅 방법을 확인하자. https://github.co..
Slack으로 Spring boot 에러 로깅 관제하기
Slack으로 Spring boot 에러 로깅 관제하기
2022.07.18토이프로젝트에 로깅은 필수.. 로깅(log)은 프로젝트를 처음 접해본 사람이 아니면, 솔직히 한번쯤은 겪고 가야할 문제이다. 로깅 자체의 구현이 어렵진 않을 것이다. Spring과 같은 Web Framework에서는 이미 로깅 프레임워크를 제공해주기 때문이다. 그중에서 우리는 logback 기능을 활용해서, 서비스를 구현해놓는게 심적으로 편하다. (이미 구현되어있으니까) 로깅 다 좋은데 말야… 로깅이 에러 대응과 같은 역할을 하는게 있고, logback에서는 파일, 콘솔과 같은 툴로 이미 로그를 여러 모습으로 관리를 해주고 있기 때문에, 우리가 이러한 로그 파악에 있어서 파일을 통한 로깅, 혹은 콘솔창에 대한 로그를 통해서 확인을 해줄 수 있다. 문제는 그것이 실시간성으로 확인이 어렵다는 점이다. 왜냐하..
이 기능 있는줄 나만 몰랐나? - 2편- Intellij CE에서 Spring Boot 돌릴때 쓰기에 좋은 옵션들
이 기능 있는줄 나만 몰랐나? - 2편- Intellij CE에서 Spring Boot 돌릴때 쓰기에 좋은 옵션들
2022.07.06이건 회사에서는 되는 기능이던데... 사이드 프로젝트를 하다보면 회사에서 사용하던 IDE를 사용하지 못하고, CE버젼 즉, 커뮤니티 버젼을 사용해야할 경우가 있다. 커뮤니티 버젼 즉, 무료 버젼은 UE버젼, 얼티밋 버젼에 비해서는 정상적인 기능들을 대부분 제공은 해주긴 하지만... 막상 써보면 뭐가 하나 나사 빠져 있는 상태인 케이스들이 있다. 분명 회사에서는 후다닥 했었던 기능, 당연히 제공 되는 기능이 CE버젼으로 다운그레이드 되면서 "아니... 이 단순한 기능이 뭐길래" 도대체 왜 나를 괴롭히는지 신경이 쓰이는 경우가 왕왕 있다. 물론 당신이 부자라면, Intellij UE버젼을 돈을 왕창 내면서 사용하겠지만, 아마 나도 그렇고, 다른 사람들도 그렇겠지만... 월간 $14.90 정도의 금액이 빠진다..
스프링 롤백 테스트 하는 방식에 대한 생각
스프링 롤백 테스트 하는 방식에 대한 생각
2022.05.01JPA 관련해서 게시물 찾다가 위와 같은 블로그를 발견했어서 무슨 문제인지를 파악해보고 싶어서 해결기와 관련한 글을 작성해보았습니다 https://ttl-blog.tistory.com/523?category=906284 [JPA] 살려주세요 문제 상황을 간단하게 나타내 보도록 하겠습니다.. TestEntity @Getter @Setter @NoArgsConstructor(access = AccessLevel.PROTECTED) @Entity public class TestEntity { @Id @GeneratedValue(strategy = Generat.. ttl-blog.tistory.com TL; DR! 블로그의 질문 사항의 핵심은 롤백 상황을 테스트 환경에서 테스트 가능하도록 만드는것이었다. 블로..
Spring Batch를 활용한 토이프로젝트 - 1. 영화 업체를 가져와보자!
Spring Batch를 활용한 토이프로젝트 - 1. 영화 업체를 가져와보자!
2022.03.13안녕하세요. 2021년도 연말에 회사에서 사내 배치 프로그램을 만들일이 있어서 어떤 툴을 쓸지 고민하던 도중 Spring 공부에도 큰 도움이 되지 않을까 싶어서 Spring Batch를 공부하기 시작했었습니다. 실제로 Spring Batch에 대해서 공부하는데 큰 도움을 줄만한 게 뭐가 있을까 고민해보았는데요. 아무래도 가장 큰 도움을 줄만한 건 딱봐도 토이(파일럿) 프로젝트 같았습니다. 그래서 어떤 프로젝트를 하는게 좋을지 큰 고민을 했었는데 Spring Batch 관련한 토이프로젝트를 만들어주셨던 한 블로그에 글에 큰 도움을 받아 형식은 좀 다르지만, 여러 가지 Batch에 대해서 구현을 해보았습니다. Spring Batch를 공부하시는 분들이라면, 어느 정도의 절차를 바탕으로 진행하면서 점진적으로 ..
2021년 회고 - 새로운 우주를 만난다는 것은...
2021년 회고 - 새로운 우주를 만난다는 것은...
2021.12.31안녕하세요. 매년 그러니까 2019년, 2020년마다 우울함과 미래의 불안함을 가지고 회고를 썼었던 것 같은데, 올해는 일도 많고 회고를 위해서 올해를 돌아보는 시간도 적어져서 과연 이 글을 잘 쓸 수 있는 게 맞는가에 대한 여러 가지 생각이 들었는데요. 그래도 회고를 해본다는 게 결국 한 번쯤은 내가 뭘 했었고, 어쨌든 그 노력들이 모여서 지금의 결과를 만든 게 아닐까라는 생각만 가지고 회고를 작성했어요. 회고를 하기위해서 내가 도대체 뭘 했었는가에 대해서 곰곰이 사진첩, 이메일함, 캘린더와 같은 여러 가지 회고에 도움이 될만한 것들을 뒤적거리다 보니까 상하반기로 한 게 있었기도, 없었기도 했던 한해라서 초반엔 결과가 안 나왔고, 후반에는 내가 부족한 점이 많아 보였었던 한해였던 것 같습니다. 2021..
⌜처음 배우는 네트워크 보안⌟ 서평
⌜처음 배우는 네트워크 보안⌟ 서평
2021.12.26한빛미디어 활동을 위해서 책을 제공받아 작성된 서평입니다. 보안은 중요해! 보안은 늘 중요하다. 그리고 익명의 사용자를 받아오는 서비스 제공자 입장에서는 보안은 정말정말 중요하다는 걸 많이 깨닿고 있다. 하지만, 이러한 네트워크 보안은 도대체 어디서 부터 시작해야하는 것인지? 그리고 어디까지 보안을 하는게 맞는것인지? 를 파악하는 것이 매우 어려운 주제이다. 처음 배우는 네트워크 보안을 통해서, 보안이라는 것을 첫 설정하기 위해서 어떤 발걸음을 걸어야하는 것에 대해서 알려주는 책이다. 두 보안을 동시에 배운다. 개발자 입장에서는 소프트웨어적인 보안 시스템을 먼저 생각하기 마련인데, 실제로 보안 시스템의 경우 랜선 즉 물리적인 환경까지 고려하는 설계가 필요하다. 여러가지 시스템적인 보안 완성도를 높이기 위..
Spring Batch Partition 병렬 처리 해결기
Spring Batch Partition 병렬 처리 해결기
2021.12.19TL;DR 병렬처리는 아예 ItemReader에 AbstractPagingItemReader 재정의후 페이징 doPageRead() 재정의하면 쉽게 처리가능. ListItemReader에는 InputStreamReader가 없어서 non-thread-safe해서, 아예 병렬처리 없이 싱글 스레드로 돌았던 것. 해결을 위한 여정.. 병렬 처리는 스프링 배치에서 여러가지 방법을 제공해주는데 그중 가장 좋은 방법인 partition방식을 이용해서 해결하려 했다. 문제는 병렬처리는 마음처럼 잘 해결이 안되는 게 문제였는데, 동기식으로 Blocking되는 방식으로 시스템이 돌아갔던것이 가장 큰 문제였다. 배치 개수 배치 방법 시작 시간 종료 시간 총 걸린시간 비고 700개 partition 2021년 12월 10..