Back-end 68

JAVA의 Jar와 war의 차이점

1. Jar와 war의 차이점Jar SpringBoot의 내장톰켓 vs. War 외장톰켓, jsp 이용시 Maven 혹은 Gradle을 통해 내려받는 라이브러리들(External Libraries)은 CLASS 파일들이 묶인 jar파일로 구성되어 있는 것을 확인할 수 있다. 그리고 서비스 배포시에는 프로젝트를 WAR 포맷으로 묶어서 /webapps 등의 지정된 경로에 넣고 Tomcat 등의 웹 컨테이너(Web Container)를 이용하여  deploy하는 식으로 서비스를 많이 올리곤 한다. Jar 과 war.jar 확장자 파일에는 Class와 같은 Java 리소스와 속성 파일,  라이브러리 및 액세서리 파일이 포함되어 있다.쉽게 JAVA 어플리케이션이 동작할 수 있도록 자바 프로젝트를 압축한 파일로 생..

Jenkins - spring batch

1. Jenkins와 Spring Batch 1) Jenkins의 스케쥴링 크론탭다중 잡의 병렬처리  :  jar을 동일 포트에서 여러개 병렬로 돌린다면 포트 중복이 일어날텐데 ?Setting server.port=0 effectively disables the HTTP listener in Spring Boot, which is generally unnecessary for Spring Batch jobs that run independently without a web interface. • Since Spring Batch jobs typically don’t require an HTTP server, this is a safe way to avoid port collisions while runn..

SpringBoot Actuator

Actuator는 외부 라이브러리로 의존성을 추가하면 바로 애플리케이션 모니터링 및 관리를 할 수 있다. dependencies { implementation 'org.springframework.boot:spring-boot-starter-actuator'}     https://velog.io/@mohai2618/SpringBoot-Actuator-안전하게-사용하기 SpringBoot Actuator 안전하게 사용하기안전하게 모니터링 의존성을 사용하는 방법에 대해서 알아봤습니다velog.io

static 클래스 vs instance 클래스, static 변수, 메소드, final

static 변수, 메소드https://kadosholy.tistory.com/95 [Java] 자바 - static 변수 및 static 메소드의 이해 (특징 및 사용법)자바 - static 변수 및 static 메소드의 이해 (특징 및 사용법) 자바에서 멤버변수(필드) 및 멤버함수(메소드) 앞에 static 키워드가 붙어 있는 변수나 메소드들이 있습니다. 이를 static 변수 및 static 메kadosholy.tistory.com 내부 클래스를 static으로 선언하는 이유를 확실히 알아라.public class BoardDto { @Getter @Builder public static class BoardInfo extends BaseRes{ @ApiModelProp..

파일 다운로드, 파일 업로드 API 구현 시 보안 상 유의점

1. 파일 다운로드 Directory Traversal Attacks: Attackers might attempt to traverse directories by manipulating the fileName parameter. To prevent this, you should validate and sanitize the fileName parameter to ensure it only points to files within the designated storage directory. Authentication and Authorization: Implement proper authentication and authorization mechanisms to ensure that only authori..

Rate Limiting Mechanism

Spring Boot REST API to prevent users from making too many requests within a short period of time 서버가 제공할 수 있는 자원에는 제한이 있기 때문에 안정적으로 서비스를 제공하기 위해 예를 들어api 호출횟수를 1분당 60회로 제한하고, 60회를 넘어서는 순간 요청을 처리하지 않고 리턴한다. 이를 Throttling이라고도 한다. Rate Limit가 필요한 사례 1. 서비스의 안정성 및 성능보장 : 서버가 다운되는 등의 사고를 미연에 방지하기 위해 2. 서비스의 가용성 확보 : 과도한 트래픽으로부터 서비스를 보호 3. 보안 : 로그인, 프로모션 코드와 같이 보안적으로 중요한 기능을 brute force attck으로부터 보호한..

SpringSecurity를 사용할 때 일관적인 Exception 처리를 위해

1. Spring Security Filter chain의 구조 따라서 @Controller나 @Service에서 GlobalCustomException처리하면 (@ControllerAdvice, @ExceptionHandler) 해당 메소드로 넘어가지만, Filter에서 똑같이 Exception 터트려도 GlobalCustomException로 넘어가지 않는다. 해결방법은 Filter영역에서 Exception 처리는 아래와 같이. @Component // 유효한 자격증명을 제공하지 않고 접근하려 할 때 401Unauthorized 에러를 리턴 public class JwtAuthenticationEntryPoint implements AuthenticationEntryPoint { @Override p..