Spring

· Spring
🔹프록시interface Hello{ String sayHello(String name); String sayHi(String name); String sayThankYou(String name);}public class HelloTarget implements Hello{ @Override public String sayHello(String name) { return "Hello "+name; } @Override public String sayHi(String name) { return "Hi "+name; } @Override public String sayThankYou(String name) { ..
· Spring
🔹기본 개념🔸동기(Synchronous)와 비동기(Asynchronous)동기: 요청한 작업을 들어온 순서대로 처리.비동기: 요청한 작업을 순서에 상관없이 처리.🔸Blocking 과 Non-BlockingBlocking: 요청한 작업이 끝날 때까지 제어권을 넘김.Non-Blocking: 요청한 작업이 끝나지 않아도 제어권을 계속 유지.🔸싱글 스레드와 멀티 스레드싱글 스레드: 하나의 프로세스에서 하나의 쓰레드가 작업 수행.멀티 스레드: 하나의 프로세스에서 여러 개의 쓰레드가 작업 수행.Code, Data, Heap 영역 공유은 공유하고 stack 영역은 각 쓰레드가 별도로 관리하기 때문에 동시성 문제가 발생할 수 있어 주의해야한다. 🔸조합에 따른 동작 방식싱글 스레드 - 동기: 하나의 공간에서 순..
· Spring
🔹Spring의 프록시 개념Spring 프레임워크는 비동기 실행(@Async), 트랜잭션(@Transactional),  AOP(@Aspect) 등 다양한 기능을 제공할 때 프록시(proxy) 객체를 활용한다. 🔸프록시 객체란?프록시 객체는 원본 객체를 감싸는 대리 객체로, 메서드 호출을 가로채고 추가적인 기능을 수행할 수 있다.  Spring에서 @Async 기능을 적용할 때의 예시를 살펴보자@Servicepublic class PatientScheduleService { @Async public void asyncMethod() { System.out.println("비동기 실행"); // 프록시 객체를 통해 호출됨 → 비동기 실행됨 }} Spring이 Patient..
· Spring
🔹ExecutorService병렬 작업을 쉽게 처리하기 위해 제공되는 Java 라이브러리ThreadPool을 사용하여 스레드를 효율적으로 관리작업(Task)은 Queue에 저장되며, 실행 가능한 스레드가 순차적으로 처리 사용방법1. ThreadPoolExecutor는 인터페이스 ExecutorService를 구현하여 사용가능하다.public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueu..
· Spring
🔹페이지네이션(Pagination)페이지네이션은 데이터를 일정한 단위로 나누어 제공하는 방식이다. 대량의 데이터를 한번에 조회하는 부담을 줄이고, 원하는 범위의 데이터를 효율적으로 조회할 수 있다. 🔸오프셋 기반 페이지네이션LIMIT과 OFFSET을 사용해 특정 범위의 데이터를 조회하는 방식 장점- 구현이 간단하고 직관적이다.- 정적인 데이터 목록 조회에 적합하다.단점1. 데이터 중복 문제 사용자가 페이지를 요청하는 동안 새로운 데이터가 추가되거나 삭제되면, 중복된 데이터를 보게 될 수 있다. 예를 들어, 다음과 같은 쿼리를 실행한다고 가정한다. SELECT * FROM patient_videos ORDER BY created_at DESC LIMIT 10 OFFSET 0;1페이지의 결과로 ID 10..
· Spring
1. API KEY 발급 받기https://platform.openai.com/api-keys 위 링크로 접속하면다음과 같이 create new secret key 버튼을 확인할 수 있다. 클릭해서 키 하나를 생성한다.  프로젝트에서 사용할 secret key를 하나 만들었다.    application.yml 에 다음과 같이 설정하고 동적으로 가져다 사용할 것이다. openai: model: gpt-4o api: key: ${OPENAI_API_KEY} url: "https://api.openai.com/v1/chat/completions" image-url: "https://api.openai.com/v1/images/generations"  2. 코드 작성  GitHub - SS..
88dldl
'Spring' 카테고리의 글 목록