- [ Study/Spring ][Spring] Swagger UI 초기 세팅2025-01-26 22:48:15작업 환경STS4Spring Framework 6.x ...Spring Web 3.x ...+ API 서버는 현재 라즈베리파이 내부에 docker 컨테이너로 띄워져있는 상태 KDT 이후로 스웨거 세팅이 처음이라 오랜만이였다.세팅하게 된 계기는 심심해서 개인 프로젝트 만들 때 마다 MVC로 하다보니 xml 작성도 귀찮고..회사에서 API 서버 쓰는 거 보니까 나도 하나 만들면 좋겠다 싶어서 만들어놓고나서 보니 문서화가 안되어 있어서 보기 어려웠다.그래서 간단하게 적용 방법만 메모용으로 남긴다. 1. build.gradleimplementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.7.0' [참고] spring boot 3.x는 spring..
- [ Study/Spring ][Spring] Rest API ExceptionHandler2025-01-19 23:28:28Rest API 서버 만들면서 예외 처리에 대한 부분이 필요했다. 설명은 없고 메모용이라 간략간략하게 확인만 하자. 필자는 STS4(Spring Tool Suite 4)에서 진행한다. 패키지 구조는 아래와 같다. @Getter@AllArgsConstructorpublic enum ApiStatus { SUCCESS(200, "요청이 성공적으로 완료되었습니다."), CREATED(201, "리소스가 성공적으로 생성되었습니다."), BAD_REQUEST(400, "요청이 유효하지 않습니다."), UNAUTHORIZED(401, "권한이 확인되지 않았습니다."), FORBIDDEN(403, "접근이 거부되었습니다."), NOT_FOUND(404, "요청한 리소스를 찾을 수 없..
- [ Study/Spring ][Spring] CustomExceptionHanlder2024-11-29 21:54:51@GetMapping("/read-md") public String readMarkdown(@RequestParam Map requestMap, Model model) throws NotFoundException, AccessDeniedException { Map boardSelect = service.boardSelect(requestMap); if(boardSelect == null) { throw new NotFoundException(); } // 중략 if((secYn.equals("Y") || code.equals(CategoryCode.DATA.code)) && role.equals(Const.ROLE_A..
- [ Study/Spring ][Spring] 검색 결과 미리보기2024-11-17 21:14:11이전 방법제목이 ‘일상, 토요일, 주말 …’ 이런 식이여서 검색 시 제목으로 검색했었다. 변경 내용제목을 일월시로 통일 시켜놔서 검색 시 게시글 내용으로 검색한다. 그래서 검색하면 네이버 카페처럼 내용이 조금 보여졌으면 싶었고 웹에디터 라이브러리(CKEditor5) 사용 중이라 게시글 내용이 html 코드로 파싱된다는 점을 인지했다.(막상 지금 들어가서 검색하니 안보이는데.. 전에 보였던건 다른 웹페이지에서 보였던 것 같다) html 코드를 제거하고 문자열만 추출하는 방법은 크게 2가지로 나뉘는데 첫번째 방법은 정규식으로 제거하기 또 하나는 html 파서 라이브러리를 사용해 html 코드를 제거하는 것이였다. 정규식으로 html 코드를 추출하는 것 보다 라이브러리를 사용해서 제거하는 방법이 훨씬 더 수월..
- [ Study/Spring ][Spring] 공개/비공개글2024-11-03 17:37:40게시판에 글 등록할 때 ‘비밀글 여부’에 체크박스 활성화를 시킨 경우 Spring Security에서 ROLE 확인 후 서버 내부에서 해당 게시글 표출 안되게 끔 하는 작업이다. 아무래도 페이지네이션이랑 같이 작업해야하는 부분이다보니 처음에 화면 단에서 Spring Security 써서 비밀 글 표출 안되게 하는 방법을 적용해봤는데 그럼 화면 단에서 페이지네이션도 해당 부분을 처리해야하는거라 그럴바엔 서버에서 처리하자.. 이렇게 생각하게 되었다. 사실 삽질을 좀 하긴 했는데(;;) 다시 한번 리마인드 해보니 굉장히 쉬운 작업이였다.. 일단 Controller 단에서 아래 부분을 호출해서 로그를 찍어보자. Authentication authentication = SecurityContex..
- [ Study/SSR ][SSR] Thymeleaf에서 Spring Security 사용하기(thymeleaf-extras-springsecurity6)2024-10-01 16:55:02만들고 싶은 거 있을 때 마다 적용할테니 짤막하게 사용 방법만.. 사용 전 build.gradle에 thymeleaf-extras-springsecurity6 라이브러리를 추가해줘야 한다. 나는 start.spring.io에서 처음에 프로젝트 생성 시 Spring Security를 선택해놔서 있긴한데 없으면 추가하자. dependencies { implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity6'} html에서 사용할 때는 아래와 같이 xmlns:sec="http://www.thymeleaf.org/extras/spring-security" 부분이 있어야 한다. 내가 자주 사용하는 속성은 아래 3개이다. ..
- [ Study/Spring ][Spring] RSS(XML) Parsing2024-09-21 14:32:43개인 홈페이지 배포하고 공부한 내용들을 올리려는데 블로그에 올린 내용이랑 겹치다보니 번거롭다는 생각이 들었다. 티스토리에서 RSS 지원하는 걸 알고 있어서 이 김에 RSS 파싱에 대해 다뤄봤다. 생각을 여러 개 좀 했었는데 뭐냐면.. DB를 다뤄야 하나.. 최신 글만 필요한걸까.. 내가 나중에 갖고오고 싶은 글을 가져오려나 생각 했었는데 아직은 그렇게까지는 할 생각이 없어서 DB에 값 안넣고 RSS 연동해서 최신 글만 가져오는 걸로 결정했다. 일단 RSS을 파싱할 파일 혹은 URL이 있어야 한다. 나는 내 티스토리 블로그의 RSS 주소를 application.yaml에 저장해놨다. rss: url: https://mytilblog.tistory.com/rss 이건 내 티스토리 블로그의 RSS 구성인데 참..
- [ Study/STS4 ][STS4] .gitignore2024-09-20 23:34:09STS4에서 Import Gradle Project를 실행하면 caches, daemon, native, wrapper 등 여러 개의 폴더가 생긴다.이 외에도 필요없는 파일들은 Commit 시 안올라가게 미리 없애놓자. .classpath.gradle.project.settings.gitignore/bin/caches/daemon/native/wrapper/buildapplication.yaml