Spring97 비동기 서블릿(Asynchronous Servlet) 비동기 서블릿(Asynchronous Servlet)서블릿 3.0부터 도입됨요청-응답 사이클을 일반적인 동기 방식( 요청이 들어오면 처리 스레드를 끝까지 점유, 요청→처리→응답까지 한 스레드가 블록킹하며 처리 )이 아니라 비동기 방식을 가능하게함이로써높은 부하에도 요청 처리용 스레드를 효율적으로 재사용할 수 있고, API 게이트웨이, SSE, 롱폴링 같은 장시간 연결 시나리오에 유리 비동기 방식 1. startAsync()로 AsyncContext 확보 → 스레드 반환 AsyncContext asyncCtx = request.startAsync(); 이때 컨테이너(Tomcat 등)는 요청을 처리하던 스레드를 곧바로 반환 , 해당 HTTP 커넥션은 닫지 않은 채로 “열어” 놓는다. 2. 다른 스레드에서 작.. 2025. 5. 29. TCP프로토콜과 Socket, WebSocket, SseEmitter ServerSocket, SocketTCP소켓 API IP와 포트 기반의 저수준(transport layer) 통신 바이트 스트림을 직접 읽고 쓰면서 프로토콜(HTTP, FTP, 커스텀 프로토콜 등)을 직접 구현할수 있음 일반HTTP · SSE(SseEmitter) · WebSocket 모두 내부적으로는 TCP소켓(= Socket)을 사용톰캣 커넥터(또는 다른 컨테이너)가 저수준 Socket/채널을 관리, 개발자는 저수준 소켓 코드를 직접 다루지 않아도 됨모두 애플리케이션 레벨 프로토콜쪽 개념 차이점은 “연결을 열어두는 방식”과 “스레드 사용 방식” 커넥터 레벨 소켓 관리스레드 사용 방식일반 HTTP요청 수신 시 소켓 열고, 응답 후 닫거나 재사용요청당 스레드 하나 점유, 응답 후 반납SSE 컨테이너.. 2025. 5. 29. JPA Entity 연관관계 걸어야 하나 유튜브 보고 정리함 연관관계 거의 안검id매핑을 하고, fk는 안씀( id로만 걸어놓으면 그다음에 전략을 선택하기는 쉬움, 관계메핑을 떡칠해 놓으면 답이 없다.보수적으로 걸어놓으면 나중에 늘리는건 쉽다. ) 안거는거- 양방향 걸지 않는다 - 단방향만 건다 - 단방향도 oneToMany 잘 안건다 - oneToOne 안건다 거는 기준 - 라이프사이클(생명주기) 가 완전히 같다면 고민 ( user가 있다고 해서 post가 꼭 있는가? ) - 단방향 manyToOne는 고민후 보통 건다 https://www.youtube.com/watch?v=vgNHW_nb2mg 2025. 4. 27. 도메인 객체 도메인 객체비즈니스 도메인에서 실제로 존재하는 사물이나 개념을 나타낸다. 이는 비즈니스 로직에 중점을 둔 객체비즈니스 로직과 애플리케이션의 핵심 기능을 구현하는 데 사용되는 객체이 객체들은 데이터의 유효성 검사, 상태 관리, 비즈니스 규칙의 실행 등 복잡한 작업을 수행합니다.예를 들어, 은행 시스템에서 고객, 계좌, 거래 등반면, DTO는 이러한 비즈니스 로직을 포함하지 않고, 단순히 데이터를 전달하는 역할만 수행 DTO의 주된 목적은 계층 간의 데이터 전달 Domain객체와 Entity의 분리 장단점 장점 도메인 변경이 유연하여 확장하기에 용이하다. 데이터베이스의 변화가 entity에 그친다. 계층간 분리가 명확하다. 단점 변환하는 로직이 많아져서 가독성이 떨어진다. 복잡하고 domain-entity간.. 2025. 4. 27. 트랜잭션 범위의 PersistenceContext 스프링에서 JPA를 사용하게 되면 스프링 컨테이너가 트랜잭션과 PersistenceContext를 관리스프링 컨테이너의 기본 전략은 '트랜잭션 범위의 PersistenceContext' 이다. 트랜잭션 범위의 PersistenceContext트랜잭션의 범위와 PersistenceContext의 생존 범위를 맞추는 전략으로 트랜잭션이 시작하는 순간 PersistenceContext도 생성되고, 트랜잭션이 끝나는 순간에 PersistenceContext도 종료됨. 트랜잭션이 같으면, 같은 영속성 컨텍스트를 사용한다. 트랜잭션이 다르면, 다른 영속성 컨텍스트를 사용한다.스프링 컨테이너는 스레드마다 각각 다른 트랜잭션을 할당하여 영속성 컨텍스트가 스레드 간에 공유되지 않아 멀티스레드 상황에 안전하다. .. 2025. 4. 20. SecurityContext, SecurityContextHolder SecurityContext Authentication객체가 저장되는 보관소 SecurityContextHolder전략(Strategy)에 따라 SecurityContext의 저장 방식이 다름 일반적으로는 ThreadLocal 에 저장 > 코드 어디서나 Authentication 을 꺼내서 사용가능 SecurityContextHolder SecurityContext객체의 저장 방식(Strategy)을 지정MODE_THREADLOCAL스레드당 SecurityContext 객체를 할당, 기본값MODE_INHERITABLETHREADLOCAL메인, 자식 스레드에서 동일한 SecurityContext 사용MODE_GLOBAL프래그램에서 딱 하나의 SecurityContext만 저장 2025. 4. 17. 이전 1 2 3 4 ··· 17 다음