일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- Redis
- Spring
- AOP
- 연습문제
- 코딩
- Scaffold
- OAuth
- 코드트리
- flutter
- exception
- pub.dev
- c
- Oidc
- 코딩 테스트
- C언어
- 부하 테스트
- 자료구조
- thread
- 운영체제
- nGrinder
- java
- Sharding
- Kafka
- dip
- Kotlin
- kakao
- login
- 코딩테스트
- 코드 트리
- hashmap
- Today
- Total
목록AOP (4)
Nick Dev
코틀린 공부를 하다가 서비스 계층에서 @Transactional을 붙이니깐 빨간 밑줄이 뜨며 클래스와 함수를 open 해야 한다고 뜬다. 왜 그럴까??⭐️ 바로 @Transactional의 동작 방식 때문이다! ⭐️✅ @Transactional의 동작 방식Spring은 이 어노테이션이 붙은 클래스나 메서드에 대해서 Spring AOP를 통해서 프록시를 생성한다Spring AOP는 원본 클래스를 상속받아서 메서드 앞 뒤로 트랜잭션 관련 로직을 추가한다하지만 코틀린은 기본적으로 모든 클래스와 메서드가 final이다 (자바와 반대)자바는 기본적으로 모두 상속 가능한 상태고 명시적으로 final 키워드를 붙여서 막는다final 클래스(메서드)는 상속(오버라이드)가 불가능하다그렇기 때문에 Intellij가 "야 ..
sharding을 애플리케이션 단에서 구현하려면 sharding key를 정하고 해당 key를 바탕으로 런타임 시점에서 DataSource를 정해야 된다.이의 구현 과정을 설명해보려고 한다.동적 DataSourceRouting의 필요성DB에 가해지는 부하를 줄이기 위해서 sharding을 해야겠다고 판단했다.NoSQL의 경우, DB 단에서 알어서 sharding이 일어나기에애플리케이션 단에서 설정할게 없다.하지만 현재 사용하고 있는 DB는 MySQL이기에 애플리케이션 단에서 sharding key를 기준으로 동적으로 DataSource를 결정해야 된다.sharding key 고르기userId를 sharding key로 설정했다.내 비지니스 설정 상, 대부분의 api는 로그인 후에 사용 가능하고, 로그인 ..
@Cacheable이란?springframework의 어노테이션으로 메서드에 target은 메서드이고메서드의 리턴 값을 편리하게 캐시해주는 것이때, @cacheable은 특정 캐시(Redis) 등에 종속되지 않은 추상화된 기능이기에 캐시를 변경하여도 애플리케이션 코드에 영향을 주지 않는다동작 방식Spring AOP 방식으로 프록시 패턴을 통해 메서드의 반환 값을 자동으로 캐시해주는 방식이다.간단하게 Spring AOP와 프록시 패턴에 대해 알아보자정의Spring AOPAspect-Oriented Programming (관점 지향 프로그래밍)의 줄임말관점을 바탕으로 모듈별(메서드별)로 중복해서 나오는 횡단 관심사(cross concern)을 메서드로 걷어내고, 해당 관심사를 필요로 하는 곳에 해당 메서드를..
고민하게 된 계기프로젝트 전반에서 현재 로그인된 유저의 정보를 가져오는 일이 많다'나의 게시물', '게시물 작성' 등 많은 로직에서 현재 세션에 있는 유저 정보를 필요로 함필요로 할 때마다 세션에서 유저 정보 가져오는 것은 중복된 코드가 너무 많아짐 -> 한 곳에서 처리하자!!초기 해결 방식ArgumentResolver 를 통해 공통 관심사를 걷어내자@Slf4jpublic class LoginMemberArgumentResolver implements HandlerMethodArgumentResolver { /** * @Login 애노테이션 붙어있으면서 UserDTO 타입이면 해당 ArgumentResolver 사용 */ @Override public boolean supp..