프로그래밍 회고록/Java & Spring (11) 썸네일형 리스트형 Spring에 Swagger 도입하기 목차 서론 본론 spring 프로젝트 생성 library 사이트 문서 확인 library 설치 화면 확인 간단한 사용 첨언 소스코드 서론 Swagger는 RESTful API를 설계, 문서화 및 시각화하는 도구이다. 주로 개발자와 API 사용자 간의 소통을 촉진하고 API의 이해도를 높이는 데 사용된다. 이를 통해 API의 사용 방법, 엔드포인트, 요청 및 응답 형식 등을 명확하게 문서화하여 개발 및 통합 과정을 단순화할 수 있다. 그래서 문서화 하기 편한 swagger를 도입하기 위해 spring에 springdoc라고하는 라이브러리를 사용하여 swagger를 도입하는 과정을 설명하고 기록하고자한다. 본론 spring 프로젝트 생성 https://start.spring.io/ 를 방문해 기본 스프링 .. Spring Mvc프로젝트의 이해 목차 Http Servlet 템플릿엔진 MVC패턴 SpringWebMvc 1. HTTP HTTP 프로토콜은 모든 것을 웹을 통해서 통신하고 있는 21세기 지금 없어서는 안되는 중요한 규약이다. HTTP프로토콜의 중요성을 생각할 때 그 이미지를 상상해보자면 굉장히 복잡한 무엇이 떠오르기 마련이지만 실제 프로토콜의 메시지 구조를 확인해보면 프로토콜 상태코드, 메타정보를 가지고 있는 헤더, 실제 보내거나 받을 정보인 바디라는 세가지 문자열 조합의 나열이다. 문자열의 조합이 HTTP프로토콜이라는 점을 생각해볼 때 통신을 하기위해서 개발자가 직접 HTTP문자열을 만드는 문자열의 나열을 작성하거나, 혹은 HTTP프로토콜을 만들어주는 함수를 직접 만들어 사용하는 방법을 생각할 수 있다. 그런데 모든 것을 직접 만들어.. SpringBoot 2.4.1 이후 문법 변화에 따른 환경분리를 위한 설정파일 작성법 환경분리 프로젝트를 진행하다 보면 로컬환경과 개발환경 그리고 운영환경의 설정을 서로 다르게 가져가야할 경우가 존재한다. 그런경우 .properties파일이나 .yml파일에서 서로 다른 설정에 따른 파일을 만들어 가져가는것이 일반적으로 Spring에서 활용하는 환경분리 방법이다. 기존의 방법 SpringBoot 2.4이전에는 spring.profiles 옵션을 활용해서 application-local.yml spring: profiles:local ... application-develop.yml spring: profiles:develop ... profiles의 변수명이 다름을 주목하자. 다음과 같이 서로다른 파일을 가져가서 실행시에 실행변수에 어떤 환경인지 넘겨주며 실행했었다. 그러나 SpringBo.. Apache Log4j2 보안이슈 와 문제해결 # 서론 전세계적으로 역대급 보안이슈가 터졌다. 한번쯤은 들어봤을법한 마인크래프트 라는 게임에서 서비스를 하는 한 회사가 보안취약점을 이용한 해킹 시도를 찾아 내면서 해당 보안이슈가 밝혀졌다. Apache에서 제공하는 오픈소스 라이브러리인 Log4j의 취약점을 통해 상대방 컴퓨터에 원격접속해 온갖짓을 다할 수 있다는 것이다. 해당 취약점이 발생하는 log4j버전은 2.0-beta9 ~ 2.14.1 모든 버전이다 내가 받은 프로그램에 Log4j의 해당 버전이 포함된다면 중요파일 삭제, 컴퓨터 끄기, 웹캠 켜기같은 나쁜짓들을 나쁜 마음 먹은 사람들이 얼마든지 할 수 있게 한다. 그럼 이 문제를 어떻게 해결할 수 있을지에 대해 몇가지 찾아보았고 글로 남겨두려 한다. #본론 해결 방법은 log4j 를 버전업을 .. Java(Spring)와 JavaScript(vue.js)로 서버단 Mp3파일 클라이언트로 보내 재생하기 - 1.Java # 서론 브라우저에서 곧바로 내 로컬 파일에 있는 Mp3를 재생시키는 기능을 구현하려고 하니 Chrome에서는 정책상 불가능했다. 방법에 대해 고민하다 지인에게 파일을 서버단에서 읽어 클라이언트로 보내 재생하라는 조언을 들었고 기능을 구현해 작성해 놓고자 한다. #본론 구현하는 흐름은 다음과 같다. 첫째, 자바(서버)에서 파일을 읽어들인다. 둘째, 해당 파일을 통신가능하게 변환한다. 셋째, 클라이언트에서 해당 파일을 받는다. 넷째, 해당 파일을 재생하기위해 디코딩한다. 다섯째, 재생한다. 1. 자바에서 파일을 읽어들인다 (playAudio메소드) & 해당 파일을 통신가능하게 변환한다(fileToString메소드) // 읽어들이는 파일을 컨트롤러를 통해 보내기 위해 적재하는 메소드 public Linked.. Java와 java_websocket library를 이용한 WebSocket Clinet쪽 통신방법 # 서론 우리쪽 서버가 클라이언트가 되는상황에서 웹소켓 통신을 시도해 보았다. 사용한 라이브러리는 java_websocket라이브러리를 사용했고 코드가 이해하기 단순해지기 때문에 사용했다. 해당 라이브러리를 활용해 Util로 만들어 놓아 모듈화 했으며 참고용에 도움이 되었으면 좋겠다. 라이브러리 github주소는 https://github.com/TooTallNate/Java-WebSocket GitHub - TooTallNate/Java-WebSocket: A barebones WebSocket client and server implementation written in 100% Java. A barebones WebSocket client and server implementation written.. DB JNDI환경설정을 Spring에서 Annotation로 Dbconfig설정하기 # WAS 설정 변경 JNDI방식은 익숙하게 사용하는 JDBC API를 활용하는것과는 다른 실행구조를 가진다. JDBC의 경우 웹 어플리케이션 내부에서 연결해 데이터베이스를 호출하는 느낌이라면 JNDI의 경우에는 WAS에서 DB를 연결을 해놓은 후 웹어플리케이션은 그 연결된 WAS서버에서 데이터베이스를 호출하게된다. 따라서 JNDI를 활용하기 위해서는 WAS에서 DB환경설정을 한다. 나 같은 경우에는 WAS를 JEUS를 사용했기에 WEB_ADMIN에서 Resource > Database 를 들어가 Add+를 눌러 DB를 세팅한다. 그 이후 Server와 연동을 해야한다. Data Sources 에서 적용한 Data를 넣어주고 저장한다. # Java > Spring 설정 변경하기 @Configuration.. Filter, Interceptor, Aop가 뭔데? # 궁금증 Spring으로 MVC모델을 만들때 Controller로 넘어오기 이전에 Filter와 Interceptor와 Aop를 거쳐서 지나간다는것을 알았다. 그런데 이 세가지가 무슨 역할을 하는지에 대해서 정확히 모른다. 웹프로그래밍은 내 밥줄이고 따라서 각 세가지가 어떤역할을 하는지에 대해 파악이 필요하다. # 내가 찾은 답 Filter Client에서 Server로 요청을 주고 받을것이다. Client 에서 Server로 요청을 주고받을 때 가장먼저 Spring으로 들어가기 이전에 혹은 나온 이후 로직적으로 수정하거나 변환하는 역할을 할텐데 그 역할을 하는 것이 filter이다 대표적인 로직으로는 UTF-8로 받기위한 인코딩 작업이 있다. Interceptor Dispacher Servlet(스프.. 이전 1 2 다음