Programming50 Spring Bean Lifecycle Spring Framework의 IoC(Inversion of Control) 컨테이너는 Bean의 생성, 초기화, 소멸 등 생명주기를 관리한다. Spring Bean 생명 주기의 각 단계를 알아보자. 1. Spring Bean Lifecycle 이란?Spring Bean Lifecycle 은 Spring IoC 컨테이너에 의해 관리되는 객체의 생명주기를 뜻한다. Bean은 ApplicationContext 에 등록되고, 초기화 및 솜려 과정에서 다양한 Callback method 가 호출된다.단계객체 생성 (Instantiation): Bean 정의에 따라 객체가 생성된다.의존성 주입 (Dependency Injection) : 필요한 의존성이 주입된다.초기화 (Initialization) : @Pos.. 2024. 11. 20. Spring Boot에서 Security와 JWT 인증 적용하기 JWT(Json Web Token) 은 REST API에서 인증 및 권한 부여를 처리하는 데 널리 사용되는 토큰 기반 인증 방식이다. Spring Boot에서 Spring Security와 JWT를 사용해 인증 시스템을 구현하는 방법을 알아보자. 1. JWT 인증이란?JWT는 세가지 구성요소로 이루어진 JSON 기반 토큰이다.Header: 토근의 유형과 알고르짐을 포함Payload: 사용자 정보 및 추가 데이터를 담고 있는 클레임Signature: 토큰의 무결성을 검증하기 위한 서명.JWT는 클라이언트와 서버 간 상태를 유지하지 않는 인증을 가능하게 하며, 기본적으로 Bearer Token 방식으로 HTTP 헤더에 전달 된다. 2.Spring Boot 프로젝트 생성먼저 Spring Initializr 를.. 2024. 11. 19. MyBatis 로 대규모 데이터 처리 수백만 건 이상의 대규모 데이터를 다룰 때 성능 저하를 방지하고 효율성을 극대화 할 수 있는 방법들을 알아보자. 1. 대규모 데이터 처리시 주요 문제메모리 초과: 한번에 너무 많은 데이터를 조회하거나 처리하면 메모리가 부족해 질 수 있다.쿼리 실행 속도: 비효율적인 쿼리는 데이터가 많을 수록 성능에 큰 영향을 준다.트랜잭션 관리: 많은 데이터가 포함된 작업은 트랜잭션 범위 내에서 실패 시 롤백에 부하를 줄 수 있다. 2. 효율적인 데이터 조회페이징 처리 : 한 번에 모든 데이터를 가져오는 대신, 페이지 단위로 나누어 처리한다. SELECT * FROM users LIMIT #{pageSize} OFFSET #{offset} ResultHandler 를 이용한 스트리밍 처리MyBatis 는 Resul.. 2024. 11. 18. JAVA NIO와 IO의 차이점 Java는 입출력(IO) 처리를 위해 두 가지 주요 API를 제공합니다. IO(Input/Output)와 NIO (New Input/Output).이 두가지는 데이터 처리 방식, 성능, 사용목적에서 큰 차이가 있습니다. 1. Java IO와 NIOIO(Input/Output)Java IO는 스트림 기반의 동기방식 API입니다.데이터를 하나씪 처리하며, 동기적으로 데이터를 읽고 씁니다.Java 초기 버전부터 제공된 표준 API로 간단한 파일처리, 네트워크 소켓 통신 등에 사용됩니다.NIO(New Input/Output)Java NIO는 버퍼기반의 비동기 방식 API 입니다.효율적으로 대규모 데이터를 처리하도록 설계되었습니다.채널, 셀렉터, 버퍼를 사용하여 다중 클라이언트와 비동기 네크워크 처리를 지원합니다.. 2024. 11. 17. JavaScript Event Listener 종류 JavaScript에서는 웹 페이지의 다양한 작용을 감지하기 위해 여러 이벤트 리스너를 사요할 수 있다. 사용자 입력 이벤트click: 클릭 시 발생dbclick: 더블 클릭 시 발생mousedown: 마우스 버튼을 누를 때 발생mouseup: 마우스 버튼에서 손을 뗄 때 발생mousemove: 마우스가 움직일 때 발생mouseenter: 마우스가 요소 경계 안으로 들어올 때 발생mouseleave: 마우스가 요소 경계 밖으로 나갈 때 발생mouseover: 마우스가 요소 위로 이동할 때 발생mouseout: 마우스가 요소를 벗어날 때 발생contextmenu: 요소에 대해 컨텍스트 메뉴를 열려고 할 때 발생keydown: 키보드 키를 누를 때 발생keyup: 키보드 키에서 손을 뗄 때 발생keypres.. 2024. 11. 14. TypeScript 고급 타입과 유틸리티 타입 TypeScript는 기본 타입 지정뿐 아니라, 고급 타입을 통해 더욱 유연하고 강력한 코드를 작성할 수 있다. 1.교차 타입(Intersection Types)교차타입은 여러 타입을 합쳐 하나의 타입으로 만드는 방법이다.interface User { name: string; age: number;}interface Admin { isAdmin: boolean;}type AdminUser = User & Admin;const adminUser: AdminUser = { name: "Bob", age: 28, isAdmin: true }; 2. 조건부 타입(Conditional Types)조건부 타입은 T extends U ? X : Y 구문으로 타입을 유연하게 지정할 수있다.type IsStrin.. 2024. 11. 13. 이전 1 2 3 4 5 ··· 9 다음 728x90 반응형 LIST