본문 바로가기
728x90
반응형

🍃SpringFramework80

[SpringMVC] @Value로 Static 변수에 값 주입할 수 있을까? Spring에서 @Value 어노테이션은 application.properties와 같이 프로퍼티에 정의된 값을 주입하는데 사용된다.@Value 어노테이션 사용 방법.propertiesapp.name=MyApplicationapp.version=1.0.0  .java@Componentpublic class AppConfig {    @Value("${app.name:default}")    private String appName;    @Value("${app.version:0}")    private String appVersion;}보통 이렇게 @Value 형식에 맞춰 properties 값을 주입하여 주면 간단히 사용할 수 있지만 한 가지 주의할 점이 있다.@Value로 값을 주입할 변수가 sta.. 2024. 12. 10.
[SpringFramework] 서비스 중인 WAS 트러블슈팅 (with. Spring) WAS에서 에러가 발생하는데 GlobalException으로 잡히거나 Elastic의 HighLevel 클라이언트를 쓰는 경우 정확한 에러 파악이 어려울 수 있다 서버에서 발생한 에러 로그를 보고 파악하는 것이 가장 빠르고 간단한 방법이지만 에러 로그만으로 파악이 어려운 상황이 많고, 서버와의 환경이 달라 로컬(IDE)에서는 에러가 재현되지 않는 경우도 있다.서버 에러 확인 방법1. 에러가 발생하는 메서드의 에러 처리 (try/catch)를 제거한다.try {}catch(Exception e) {}2. log.debug()로 에러 발생이 의심되는 (Http 호출 등) 지점들에 로그를 찍는다log.info("호출 전 카운트 값 : {}", count);// 에러 의심 지점log.info("호출 후 카운트 .. 2024. 12. 9.
[SpringFramework] Filter로 XSS 취약점 대응하기 Servlet Filter를 등록하여 서버로의 HTTP 요청(request)에 대한 XSS 필터링 적용  XSS란?교차 사이트 스크립팅(XSS, Cross-Site Scripting)은 웹 애플리케이션 보안 취약점 중 하나로, 공격자가 악성 스크립트를 다른 사용자의 브라우저에서 실행하도록 만드는 공격 기법이다. 주로 웹 페이지에서 사용자 입력을 제대로 검증하지 않거나 필터링하지 않을 때 발생한다.XSS 공격은 사용자의 세션 쿠키, 개인 정보, 인증서 등을 탈취하거나, 악성 사이트로 리디렉션하거나, 피싱 공격을 수행할 수 있다.  그럼 XSS 공격을 막기 위해 어떻게 해야 할까? XSS는 주요 정보(session, cookie, 개인정보) 탈취, 사용자 리다이렉션, 사이트 조작 등 다양한 공격 방법이 있지.. 2024. 7. 4.
[SpringBoot] Thread starvation or clock leap detected (feat. 쓰레드 기아 현상) 트러블슈팅 Spring을 위해 열일하는 우리의 작고 귀여운 EC2가 자주 죽는 이유인 쓰레드 기아 현상이란? 제목에 있는 Thread starvation or clock leap detected 해당 에러가 어떤 에러이며, 왜 발생하는지 또 해당 에러로 인한 문제와 해결 방법에 대해 알아보자. 우선 EC2 서버가 갑자기 다운되는 상황은 자원 부족, 예외 처리 미흡, 서버 설정 문제 등 이 외에도 매우 다양한 원인들로 인해 갑작스럽게 돌연사 해버릴 수 있는 개복치 같은 서버의 사망 원인을 파악하기 위해서는 가장 쉬우면서도 중요한 서버의 로그를 확인해보면 서버의 상태나 죽었다면 죽은 이유를 파악할 수 있다. 서버가 이런 로그를 계속하여 뱉어냈다면 이 글에서 다루는 쓰레드 기아 문제이다. WARN 23318 --- [l.. 2024. 2. 11.
[SpringDataElasticsearch] Spring Data Repository의 기본과 Elasticsearch 세부 사항 Data Repositories Spring Data Repository의 기본과 Elasticsearch 세부 사항 설명. 1. 핵심 개념 (feat. Entity 상태 감지 전략) 2. Repository Interface 정의 Fine-tuning 저장소 정의 Spring Data Module 사용 3. Elasticsearch Repositories 4. Reactive Elasticsearch Repository (반응형) 사용 구성 5. Repository Instances 생성 (Instance & Bean) Java 구성 XML 구성 Filter 사용 6. Query Method 정의 7. Query Methods 쿼리 조회 쿼리 생성 Method 반환 타입 @Query 어노테이션 8. P.. 2023. 12. 16.
[SpringDataElasticsearch] Entity Callbacks. 특정 메서드가 호출되기 전후에 Entity 수정 사항을 적용하는 방법 Entity Callbacks 특정 메서드가 호출되기 전후에 Entity 수정 사항을 적용하는 방법. SpringData 인프라는 특정 메서드가 호출되기 전/후에 엔티티를 수정할 수 있는 훅을 제공하며, 이러한 EnttiyCallback 인스턴스는 Entity를 콜백 형식으로 확인하고 수정하는 편리한 방법을 제공한다. EntityCallback은 동기 및 반응형 API와의 통합 지점을 제공하며 ProcessChain 내에서 실행 순서를 보장하고, 수정된 Entity나 반응형 래퍼 유형을 반환할 수 있다. 엔티티 콜백 구현 (Implementing Entity Callbacks) EntityCallback은 일반적으로 제네릭 타입 인수를 사용하기 때문에 해당 도메인 타입과 직접적인 연관관계를 가진다. In.. 2023. 12. 16.
[SpringDataElasticsearch] Java 객체 JSON 데이터 매핑 방법. Object Mapping Java 객체(DomainEntity)를 Elasticsearch에 저장된 JSON 타입의 데이터에 매핑하고, 또 그 반대로 매핑하는 방법. Meta Model Object Mapping (메타 모델 객체 매핑) 메타모델(Metamodel) 기반 접근 방식은 Elasticsearch와의 데이터 읽기/쓰기를 위해 도메인 유형 정보를 사용한다. 이는 특정 도메인 유형 매핑을 위해 Converter 인스턴스를 등록하는 것을 허용한다. 1. Mapping Annotation Overview (매핑 주석 개요) MappingElasticsearchConverter는 메타데이터를 사용하여 객체를 문서로 매핑한다. 이 메타데이터는 Entity의 속성에서 가져오며, 이를 위해 다양한 주석을 .. 2023. 12. 16.
[SpringDataElasticsearch] Index 생성/삭제, Entity 저장/검색, Query 사용 등 조작 방법. Spring Data Elasticsearch는 여러 인터페이스를 사용하여 Elasticsearch 인덱스에 대해 호출할 수 있는 작업을 정의한다. 인터페이스는 Elasticsearch API 구조로 되어 있으며 인덱스 관리, 도메인 유형에 대한 읽기/쓰기 매핑 지원, 풍부한 쿼리 및 기준 API, 자원 관리 및 예외 번역 등의 기능 사용할 수 있게 해준다. 1. IndexOperations (인덱스 작업) IndexOperations는 인덱스 수준에서 동작하는 작업을 정의하는 인터페이스이다. 주로 인덱스를 생성하거나 삭제하는 등의 관리 작업을 수행한다. IndexOperations indexOps = elasticsearchRestTemplate.indexOps(MyEntity.class); index.. 2023. 12. 16.
[SpringDataElasticsearch] Client 구현을 통한 사용 방법 Elasticsearch 클라이언트를 직접 사용하여 클러스터 작업을 수행할 수 있지만 SpringDataElasticsearch 클라이언트를 사용하면 DataAccess, ObjectMapping, Annotation, QueryDSL, Transaction 등을 이용하여 보다 쉽고 편리하게 Elasticsearch를 사용할 수 있게 도와준다. Imperative Rest Client (명령형 REST 클라이언트) 전통적인 동기식 프로그래밍 방식을 따르며, 요청을 보내고 응답을 기다리는 동안 블로킹되는 방식을 동작한다. Ex> RestTemplate, WebClient 등,, 명령형 (비반응형) 클라이언트를 사용하기 위한 Bean 구성 @Configuration public class MyClientCo.. 2023. 12. 16.
728x90
반응형