Spring Boot 프로젝트의 컨트롤러에서 정의한 url을 모아서 보는 기능을 살펴보겠습니다. IntelliJ Ultimate 버전에서 제공하는 기능입니다. View | Tool Windows | Endpoints 메뉴를 선택합니다. IntelliJ 하단에 Endpoints 탭이 생기면서, 프로젝트 내에 있는 모든 Controller의 endpoints url을 표시해줍니다. Module, type, Framework 메뉴를 이용하여 필터링도 가능하며, 검색 기능으로 url 검색 기능도 가능합니다.
IntelliJ에는 주석을 패턴에 따라 강조해주는 기능이 있습니다. 아래 코드를 보면, 일반 주석은 "regular comments"처럼 회색으로 표기가 되고 FIXME 주석은 강조되어 표현이 됩니다. 기본적으로 등록되어 있는 강조 주석은 todo와 fixme 2가지가 있습니다. 아래 화면이, 기본으로 설정되어 있는 값입니다. 패턴으로 fixme 또는 todo 와 그 뒤에 오는 모든 글자는 강조가 됩니다. 그리고 상단에 체크되어 있는 항목 때문에 멀티라인도 적용이 됩니다. 추가로 패턴을 정의해보겠습니다. refactoring이라는 주석에 아래와 같이 설정을 적용해보겠습니다. 아래 코드를 보면 refactoring 주석에 파란색, bold, Italic, Underscored 효과가 적용되어 있습니다.
Spring에서 HTTP 요청을 하기 위해 RestTemplate를 많이 사용합니다. ( Spring 5.0부터 RestTemplate대신 WebClient을 사용을 추천하므로 legacy 프로젝트를 하시는 것이 아니라면 WebClient로 개발하시는 것을 추천드립니다. RestTemplate는 5.0부터 유지보수만 이루어집니다. 관련 링크 ) RestTemplate의 exchange, getForEntity, postForEntity 등의 API를 이용하여 응답을 ResponseEntity로 한 번에 메모리에 받아옵니다. 일반적인 경우에는 문제가 되지 않지만 응답의 크기가 수백MB이상이 되면 GC가 발생하게 됩니다. 저도 프로젝트를 진행하는 와중에, GC가 발생하여 확인해보니 응답 사이즈가 600MB ..
목차 Annotation? 자바 어노테이션은 자바 코드에 메타 데이터를 제공하기 위해 사용됩니다. @ 문자와 어노테이션 이름으로 구성이 되며, 컴파일러에서는 @ 문자로 시작이 되면 어노테이션으로 판단을 합니다. 어노테이션은 값을 저장할 수 있는 엘레멘트를 가지며, 어노테이션 이름 다음에 괄호 안에 엘레멘트를 정의합니다. @Entity(name = "table") 위의 어노테이션은 Entity라는 이름의 어노테이션이고 name이라는 엘레멘트를 가지며 name 엘레멘트의 값은 table입니다. 어노테이션은 클래스, 인터페이스, 메소드, 메소드 파라메터, 필드, 지역 변수 위에 위치할 수 있습니다. @Entity public class Animal { } Built-in Java Annotations Java..
목차 사용자 정의 어노테이션을 정의하여, 특정 메소드에 정의한 어노테이션을 선언하고 이 어노테이션이 정의 되어 있는 메소드를 찾아 메소드 이름을 출력하는 스프링부트 프로그램을 작성해보겠습니다. Annotation 정의 @interface를 사용하여 Print 어노테이션을 정의합니다. 어노테이션에 3개의 element를 정의합니다. 메소드에 적용 및 런타임에 사용하기 위해 Retention과 Target을 선언합니다. package com.example.anno.annotation; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; i..
목차 자격 증명(credentials) 설정 aws configure 명령으로 access key, secrect key와 리전 및 포맷 정보를 저장할 수 있습니다. $ aws configure AWS Access Key ID [****************IU5A]: AWS Secret Access Key [****************kdC5]: Default region name [ap-northeast-2]: Default output format [json]: 또는 credentials 파일을 직접 수정하여 설정하셔도 됩니다. ➜ ~ sudo vi ~/.aws/credentials aws configure명령으로 key를 설정하고 ~/.aws 경로에 있는 credentials 파일을 읽어보면 아..
목차 ComponentScan 이란? @ComponentScan은 스프링부트에서 제공하는 어노테이션으로써, 스프링 빈으로 만들기 위한 컴포넌트를 스캔할 곳을 설정하는 역할을 합니다. 스프링에서는 여러 빈들을 관리하면서 의존성을 주입해 주는데 이때 전체 코드에서 컴포넌트를 찾아 빈을 생성하는 것이 아니라 범위를 지정하여 그 범위 안에서 어노테이션 된 클래스들을 찾아 빈을 생성 및 관리합니다. 빈으로 등록하기 위해 스캔하는 어노테이션은 @Component, @Repository, @Service, @Controller, @Configuration 가 있습니다. com.example.component.SlideComponent와 com.example.component2.BarComponent가 있는데 둘은 서..
목차 이제 X-Ray에 기본적인 데이터가 잘 쌓이고는 있지만 추가로 보고 싶은 내용들이 있어 SQL문과 Segment 정보를 일부 커스터마이즈 하였습니다. SQL에 query 문 추가와 Subsegment 이름을 "클래스.메소드"으로 생성하도록 해보겠습니다. Segment에 Query문 기록하는 방법 X-Ray의 트레이스에서 SQL 쿼리를 기록하고 있는 subsegment 정보를 보면, 데이터베이스의 각종 정보는 나오나 정작 호출한 쿼리에 대해서는 수집을 하지 않고 있습니다. 문서에 보면, 보안 때문에 SQL query문은 기록을 하지 않는다고 합니다. 그런데 또 문서의 segment documents 에는 SQL 쿼리 subsegment를 만들때 사용하는 쿼리로 sanitized_query가 있습니다...
목차 AOP with Spring 적용하기 트레이스에서 세부 정보를 확인하면 subsegment가 외부 호출한 부분에 대한 정보만 추적을 하고 있고 실제 내부에서 호출된 로직들에 대해서는 얼마나 시간이 소요되지는지에 대한 정보가 없습니다. 그래서 메소드 단위로 시간이 얼마나 소요되는지 확인을 위해 AOP를 적용해보겠습니다. 설명 링크 먼저 아래의 의존성을 추가해줍니다 com.amazonaws aws-xray-recorder-sdk-spring 2.11.0 그리고, AbstractXrayInterceptor 를 상속받아 xrayEnabledClasses 함수를 빈 상태로 오버라이드 하고, 해당 함수를 적용할 범위를 지정해 줍니다. @Pointcut으로 XrayEnabled 어노테이션이 적용된 bean id..
- Total
- Today
- Yesterday
- Git
- Filter
- Container
- Spark
- elasticsearch
- Kibana
- error
- intellij
- Linux
- mac
- JPA
- plugin
- AWS
- Java
- Size
- docker
- Index
- Postman
- apm
- JSON
- maven
- gradle
- logstash
- spring boot
- Log
- scala
- spring
- install
- tomcat
- SpringBoot
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |