본문 바로가기

분류 전체보기142

[Spring] @RequestMapping HTTP Header 데이터 유형 / produces, consume 의미와 역할 [Spring] @RequsetMapping produces, consume 의미와 역할 @Mapping 어노테이션의 역할 Spring Boot 기반으로 웹 어플리케이션을 개발하게 되면 외부에서 들어오는 url을 처리할수 있도록 여러가지 Mapping 어노테이션을 사용하게 됩니다. 스프링 4.3 버전 이전에는 @RequestMapping만 있었지만 역할을 명시적으로 분리하기 위해 @GetMapping, @PostMapping, @DeleteMapping, @PostMapping, @PatchMapping 어노테이션들이 탄생했습니다. 컨트롤러에서 이런 Mapping 어노테이션들을 사용할때 파라미터로 value 값만 지정하여 url 경로에 대한 정의만 하는 경우도 있지만 컨트롤러를 통해 들어오거나 반환해줘야.. 2022. 7. 6.
[Spring] 스프링 빈 웹 스코프, request 타입과 프록시 모드 - 2/2 [Spring] 스프링 웹 스코프, request Scope 웹 스코프는 웹 환경에서 동작하는 스코프이며 프로토 타입과 다르게 스프링 컨테이너가 생성시점부터 종료시점까지 관리합니다. 웹 스코프의 종류 request : HTTP 요청이 들어와서 나갈때까지 유지되는 스코프, 각 클라이언트의 HTTP 요청마다 별도의 인스턴스 생성 session : HTTP Session과 동일한 생명주기를 가지는 스코프 application : 서블릿 컨텍스트(ServletContext)와 동일한 생명주기를 가지는 스코프 websocket : 웹 소켓과 동일한 생명주기를 가지는 스코프 서블릿 컨텍스트 (ServletConext) 하나의 서블릿이 서블릿 컨테이너와 통신하기 위해 사용되는 메서드들을 가지고 있는 클래스, 서블릿은.. 2022. 6. 19.
[Spring] 스프링 빈 스코프(Scope) 싱글톤, 프로토 타입 - 1/2 [Spring] 스프링 빈 스코프(Scope) 싱글톤, 프로토 타입 이전 포스팅에서 스프링 빈의 생명주기와 초기화, 소멸 콜백 메소드에 대해서 알아보았습니다. 스프링 빈은 기본적으로 스프링 컨테이너가 종료될때까지 유지되는데 스프링 빈의 기본 스코프타입이 싱글톤이기 때문입니다. 스코프(Scpoe)는 스프링 빈이 존재할수 있는 범위를 뜻합니다. 싱글톤 타입 : 스프링 컨테이너의 시작 ~ 종료시점까지 유지되는 기본적인 범위의 스코프 프로토 타입 : 스프링 빈의 생성과 의존관계 주입시점까지만 스프링 컨테이너에서 관리된다. 프로토 타입 스코프 프로토 타입 스코프는 다음과 같은 특징이 있습니다. 스프링 빈을 가져올때마다 싱글톤 타입 빈과 다르게 계속 생성되고 초기화 콜백 메서드도 매번 수행합니다. 스프링 컨테이너가.. 2022. 6. 19.
[Spring] 스프링 빈 생명주기 초기화, 소멸 콜백 관리하기 @PostConstruct, @PreDestroy [Spring] 스프링 빈 생명주기 콜백 스프링 프레임워크 기반의 애플리케이션에서는 데이터베이스를 사용하거나 TCP 소켓 연결을 할때 프로그램 시작시 미리 연결을 합니다. 그리고 프로그램이 종료될때 연결된 작업들을 모두 종료하는데 이번 포스팅에서는 스프링에서 이 연결과 종료 작업을 어떻게 수행하는지 대해서 알아보겠습니다. 테스트를 위해 TCP 소켓 연결 상황을 표현할 클래스와 테스트 메서드를 만들어보겠습니다. NetworkClient.java public class NetworkClient { private String url; public NetworkClient() { System.out.println("생성자 호출 url = " + url); connect(); call("초기화 연결 메시지"); .. 2022. 5. 26.
Grafana OAuth 방식으로 Keycloak Login 연동하기 #JWT 토큰 발행 Grafana OAuth 방식으로 Keycloak 연동하기 (JWT 토큰) Grafana에서는 로그인할때 OAuth 방식을 사용할수있도록 기능을 제공하고 있습니다. OAuth에 대한 자세한 내용은 아래 링크를 참고하면 됩니다. OAuth - 위키백과, 우리 모두의 백과사전 OAuth는 인터넷 사용자들이 비밀번호를 제공하지 않고 다른 웹사이트 상의 자신들의 정보에 대해 웹사이트나 애플리케이션의 접근 권한을 부여할 수 있는 공통적인 수단으로서 사용되는, 접근 ko.wikipedia.org Keycloak은 인증, 권한에 대한 서비스와 SSO기능을 제공하는 오픈소스 입니다. Grafana의 로그인방식은 자체적으로 제공하는 계정 로그인 방식이 기본이지만 외부 인증툴을 사용하는 방법도 있습니다. 이 포스팅에서는 .. 2022. 5. 18.
[Java] String, JsonNode 상호 변환하기 [Java] String JsonNode 변환 하기 ObjectMapper 클래스의 readTree, readValue 메서드를 사용하여 String 을 JsonNode 혹은 클래스타입으로 변경 하고 JsonNode, 클래스를 String으로 변환하는 방법에 대해 설명해보겠습니다. 1. String => JsonNode 1.1 String => Json (readTree) ObjectMapper 클래스의 readTree 메서드는 문자열을 JsonNode 타입으로 반환합니다. @Test void jsonTest() { String jsonStr = "{\"name\":\"ksr930\",\"age\":29,\"address\":\"seoul\"}"; try { JsonNode jsonNode = new O.. 2022. 4. 26.
[Linux] 하위 디렉토리 파일 내용 일괄변경 sed 명령 사용방법 [Linux] 하위 디렉토리 파일 내용 일괄변경 sed 사용방법 리눅스에서 개발을하거나 파일을 관리하거나 할때 특정 디렉토리 하위 경로에서 검색되는 파일들의 내용들중 A라는 문자열을 B라는 문자열로 일괄 변경할때 sed 명령을 사용합니다. 명령어 현재 디렉토리를 기준으로 하위경로에 있는 *.SQL 확장자 파일에 대하여 A 문자열을 B 문자열로 변경합니다. find ./ -name "*.SQL" -exec sed -i "s/A/B/g" {} \; 테스트를 해보기 위해 DIR1, DIR2, DIR3 이라는 디렉토리 3개를 생성하고 각각의 디렉토리 내부에 동일한 내용의 쿼리문을 4개씩 생성하였습니다. 터미널에서 grep 명령으로 검색을 해보면 아래와 같이 나오는데 "SELECT NAME, AGE, GENDER.. 2022. 4. 5.
[Kubernetes] Grafana 에서 Kafka 모니터링 하기 #Prometheus #kafka-exporter [Kubernetes] Grafana에서 Kafka 모니터링하기 Kubernetes 에서 PLG 스택 사용해보기 라는 주제로 작년 10월쯤에 포스팅을 작성했었습니다. 그동안 팀에서진행 하는 프로젝트에도 많은 변화가 있었는데 Kafka를 도입하여 데이터 처리를 본격적으로 하게 되었고 그에따라서 Kafka 모니터링 역시 필요하게 되었습니다. [Kubernetes] PLG(Prometheus, Loki, Grafana) Stack 설치, 운영하기 쿠버네티스에 PLG 스택 운영하기 쿠버네티스상에 PLG 스택을 호환성있게 운영하기위해서 처음에는 Promethes, Loki, Grafana를 모두 각각 Deployment 를 만들어서 설정을 맞춰 보았는데 생각만큼 잘 맞물려 ksr930.tistory.com 일반적.. 2022. 4. 1.