일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 코딩 테스트
- Scaffold
- 부하 테스트
- 코딩테스트
- exception
- depromeet
- nGrinder
- AOP
- Spring
- 코드 트리
- java
- Oidc
- 코드트리
- 연습문제
- OAuth
- Kafka
- pub.dev
- 디프만
- 운영체제
- dip
- 자료구조
- kakao
- Kotlin
- 디프만16기
- 코딩
- Sharding
- flutter
- c
- C언어
- Today
- Total
목록Kotlin (2)
Nick Dev
코틀린 공부를 하다가 서비스 계층에서 @Transactional을 붙이니깐 빨간 밑줄이 뜨며 클래스와 함수를 open 해야 한다고 뜬다. 왜 그럴까??⭐️ 바로 @Transactional의 동작 방식 때문이다! ⭐️✅ @Transactional의 동작 방식Spring은 이 어노테이션이 붙은 클래스나 메서드에 대해서 Spring AOP를 통해서 프록시를 생성한다Spring AOP는 원본 클래스를 상속받아서 메서드 앞 뒤로 트랜잭션 관련 로직을 추가한다하지만 코틀린은 기본적으로 모든 클래스와 메서드가 final이다 (자바와 반대)자바는 기본적으로 모두 상속 가능한 상태고 명시적으로 final 키워드를 붙여서 막는다final 클래스(메서드)는 상속(오버라이드)가 불가능하다그렇기 때문에 Intellij가 "야 ..
⭐️ 우선 간단하게 Optional로 리턴되던 걸 Elvis 연산자로 바꿔보자!❌ Java스러운 Optionalinterface UserRepository : JpaRepository { fun findByName(name: String) : Optional }// Java스러운 문법val user = userRepository.findByName(request.userName).orElseThrow(::IllegalArgumentException)이걸 kotlin 스럽게 바꿔보자!✅ koltin스러운 ? 연산자interface UserRepository : JpaRepository { fun findByName(name: String) : User? // 쿼리 결과가 없으면 n..