본문 바로가기

개발 이론/Spring16

요청에 대하여 쓰레드는 어떻게 획득하는가? 갑자기 프로젝트하다가 쓰레드, 쓰레드풀이 궁금해지면 쓰레드는 간단하게 worker라는건 알겠는데,..그래서 요청에대해서 누가 쓰레드를 할당해줄까??가 궁금해졌다. Tomcat이 시작할때 원초적으로 돌아가서 결국 쓰레드풀세팅과 쓰레드에 대한 세팅은 누가 해주는 걸까??로 시작해서 디버깅을 시작했다.먼저 정리한 상황을 말하자면1. Http11NioProtocol(AbstractProtocol) : 엔드포인트 새로운거 세팅2. AbstractEndPoint(NioEndPoint, AbstractJessEndPoint) : 초기화 과정3. Http11NoiProtocal : 위에서 초기화과정을 거친 EndPoint setter4. 앞선 Endpoint : 쓰레드 할당5. CoyoteAdapter : 세팅6. A.. 2024. 8. 30.
Spring Context는 모든 빈들을 프록시로 만들까??? 내가 얼핏 듣기로는 스프링 컨텍스트가 프록시로 만든다는 말을 들은 적이 있는데.. 확실하지가 않다.. 모든 빈들을 프록시로 만드는 건지.. 그래서 간단하게 테스트 해보았다. @Component public class Service { public void test(){ System.out.println("test"); } } @Configuration public class Config { @Bean public Service service(){ return new Service(); } } public static void main(String[] args) { ApplicationContext applicationContext = new AnnotationConfigApplicationContext(.. 2024. 2. 22.
트랜젝션에 대해 알아낸거를 기록하자 아니 프로젝트 하다보니 트랜젝션에 대해 생각보다 자세히 알고 있어야하는 느낌이더라... 옛날에는 진짜 아무생각 없이 코드를 짯는데 쿼리 나가는거 보고 이러다보니 트랜젝션이 신경쓰인다. 그래서 검색하면서 알아낸거 하나씩 추가하는 게시판 느낌으로 쓸 예정이다 # 2023.12.28 1. 여러 entityManger가 하나의 영속성 컨텍스트를 공유할 수 있다 -> 동일 트랜젝션에서 entitymanger를 여러번 호출해서 처리하면 같은 영속성 컨텍스트에서 처리된다 -> 다만 다른 트랜젝션이라면 다른 영속성 컨텍스트에서 처리된다 # 2023.12.29 영속성 컨텍스트와 트랜젝션 관련해서 게시글을 작성했다 https://haebing.tistory.com/116 2023. 12. 28.
API호출 RestTemplate, WebClient, Feign?? 개인프로젝트하면서 API호출이 필요해서 Open Feign을 사용했다. 어떠한 이유에서라기 보다 최근에 나온 기술이라고도 하고 생각보다 사용이 쉬워서 Open Feign을 사용했다. 그렇다면 RestTemplate, WebClient,Feign 차이는 뭘까...?? RestTemplate Spring Framework 에서 제공하는 동기식 클라이언트 라이브러리다. 동기식 라이브러리라 단순한 요청처리에는 효과적이다. 다만 오랫동안 인기있는 라이브러리였지만 대량의 요청이나 비동기적인 처리가 필요한 경우에는 성능이슈가 발생하여 최근에 deprecated되어 WebClient를 권장하는 추세이다. WebClient Spring Framework 5부터 도입된 비동기식 Http클라이언트이다. 비동기 및 리액티브 .. 2023. 12. 21.
[Spring] 동시성 어떻게 해결할 것인가? - 분산락 개인프로젝트에서 예약시스템을 구축하고 있다. 그러다보니 동시성 문제가 매우 중요하다. 한날짜에 같이 예약을 걸게 되면 최악의 상황이...그래서 어떻게 동시성을 핸들링 할까하다가 나같은 경우 redisson의 분산락을 이용했다. 일단 동시성이 왜 일어나는지와 동시성을 해결할 수 있는 방법에 대해서 얘기해보자. 이 글은 redis를 통한 분산락 해결책을 더 자세하게 다룰 계획이다. 동시성??그게 뭐고 왜 일어나는 건데?? 동일한 하나의 데이터가 2개이상의 스레드가 동시에 데이터를 제어또는 접근할때 발생하는 문제이다. 예를 들어 재고관리 시스템에서 재고를 감소시킨다고 생각해보자. 재고는 1개 남았다 만약 두 스레드가 병렬로 작업을 진행하게 되면 어느 한쪽에서 예외가 발생하거나 그래야한다. 하지만 실재로 실행해.. 2023. 11. 29.
[Spring] Spring MVC Webconfig와 Interceptors, Argument Resolvers 최근에 개인 프로젝트하면서 스프링 시큐리티 필터말고 인터셉처를 통해서 인증관련된 기능을 구현하고 있다. 어떠한 이유로 스프링 시큐리티를 사용안한다기보다는 부트캠프 미션때 이미 스프링 시큐리티를 간단하게 써본적이있어서 한번 인터셉터를 통해 구현해보고 싶었다. 스프링 시큐리티와 인터셉터가 뭐가 다르냐고 물어본다면 이미 정리해둔 내용이 있다 https://haebing.tistory.com/85 또 arguementResolver가 정확히 몰라서 간단하게 정의와 코드로 정리해둔 내용이 있다 https://haebing.tistory.com/87 WebConfig파일 프로젝트 한번 해봤다하면 WebConfig파일은 한번씩 봤을 것이다. 한마디로 정리하면 웹 구성에 대해 지정하는 내용이 담겨있는 파일이다 스프링부.. 2023. 11. 26.
728x90