Kotlin 17

[에러해결] Unexpected error occurred in scheduled task

Unexpected error occurred in scheduled task org.springframework.transaction.UnexpectedRollbackException: Transaction silently rolled back because it has been marked as rollback-only 기존에 스프링부트 + JPA 를 사용해서 백엔드를 구축 중이었당 이번에 주기적인 알람 기능을 구현하면서 @Scheduled 어노테이션을 사용하게 되었고 자연스럽게 @Transactional 어노테이션이 붙어있던 트랜잭션에 @Scheduled 어노테이션을 붙여서 사용하게 되었다 그러나 Unexpected error occurred in scheduled task 에러 발생.. 구글링을 ..

error 2022.09.13

[에러해결] A component required a bean named 'redisTemplate' that could not be found.

현재 상황 한개의 spring boot 에 두개의 redis를 연결해야 하는 상황 기존 코드는 한개의 redis 만 연결해 두었으나 변경하게 되면서, config/하위 폴더에 RedisDevConfig RedisRealConfig 이렇게 두개의 Config 를 만들어두게 되었다 @Bean(name = ["devRedisConnectionFactory"]) @Qualifier("devRedisConnectionFactory") redisConnectionFactory: RedisConnectionFactory이렇게 Bean 이름을 각각 명시해주고, Qualifier 로 해당 이름의 빈을 가져와서 쓰면 될것이라고 생각했다. 오류 발생 org.springframework.beans.factory.NoSuchB..

error 2021.05.06

kotlin 산술 연산자 오버로딩 (+, - *)

7.1 산술 연산자 오버로딩 String 에 대해 + 연산자를 사용하는 것 또한 산술 연산자 오버로딩 BigInteger 클래스를 다룬다면 add 메소드를 명시적으로 호출하기 보다는 + 연산을 사용하는 편이 더 낫다? 컬렉션에서도 += 연산자를 사용하도록 할 수 있다 7.1.1 이항 산술 연산 오버로딩 data class Point(val x : Int, val y : Int){ operator fun plus(other: Point): Point { return Point(x+otherx, y+other.y) } } val p1 = Point(10,20) val p2 = Point(30,40) println(p1 + p2) 위 코드에서 + 를 써주면 plus 함수가 호출된다 plus 앞에 operato..

Languages 2020.05.18

kotlin의 null 가능성과 collection

6.3 컬렉션과 배열 6.3.1 널 가능성과 컬렉션 List? 널이 될 수 있는 값으로 이루어진 널이 될 수 있는 리스트 val validNumbers = numbers.filterNotNull() filterNotNull 함수로 null 값들을 filter 햇다고 할때, valNumbers 값은 List 값이 될 수 있다 6.3.2 읽기 전용과 변경 가능한 컬렉션 kotlin 에서 컬렉션안의 데이터에 접근하는 인터페이스와, 컬렉션 안의 데이터를 변경하는 인터페이스를 분리 접근하는 인터페이스 : kotlin.collections.Collection size, iterator, contains 등의 메소드 변경하는 인터페이스 : kotlin.collections.MutableCollection Mutabl..

Languages 2020.05.07

kotlin의 null 가능성 (?. ?: !!)

6.1 널 가능성 NPE : null pointer exception 코틀린은 Nullability로 NPE를 피할 수 있게 해준다 6.1.1 널이 될 수 있는 타입 코틀린은 java와 다르게 null 이 될 수 있는 타입을 명시적으로 지원한다 모든 타입은 기본적으로 널이 될 수 없는 타입이다 ?가 붙어야 널이 될 수 있다 널이 될 수 있는 타입의 변수인 경우 수행할 수 있는 연산이 제한된다 변수.메소드() 형식이 제한된다 ?. !! 등을 써줘야 한다 널이 될 수 있는 값을 널이 될 수 없는 타입의 변수에 대입할 수 없다 널이 될 수 있는 타입의 값을 널이 될 수 없는 타입의 파라미터를 받는 함수에 전달할 수 없다 null과 널이 될 수 있는 변수를 비교한 다음에는 위의 제한 되는 부분들이 모두 풀리고 ..

Languages 2020.05.07

kotlin의 수신객체 지정 람다 (with, apply)

수신 객체 지정 람다 : with 와 apply kotlin 표준 라이브러리 with, apply kotlin에만 있는 기능 수신 객체를 명시하지 않고 람다의 본문 안에서 다른 객체의 메소드를 호출할 수 있게 하는 것 이 람다를 수신객체 지정 람다 (lambda with receiver) 라고 부른다 🧵 with 함수 코틀린은 with 함수를 언어 구성요소가 아닌 라이브러리 함수를 통해 제공함 ? fun alphabet(): String { val stringBuilder = StringBuilder() return with(stringBuilder){ for (letter in 'A'...'Z'){ this.append(letter) } append("\nNow I know..

Languages 2020.04.26

java 함수에 kotlin lambda 식 메소드로 전달하기 (자바 함수형 인터페이스)

자바 함수형 인터페이스 활용 코틀린 lambda를 java API에 사용할 수 있다 SAM 인터페이스 == functional interface single abstract method : 단일 추상 메소드 interface에 추상 메소드가 하나만 있는 경우에 사용가능 ? java로 작성한 functional interface에서만 동작 SAM conversions이 동작하면 lambda 식을 사용할 수 있다 👨‍👨‍👧‍👦 자바 메소드에 람다를 인자로 전달 // java public interface OnClickListener { void onClick(View v); } // kotlin button.setOnClickListener { v -> ...} // java void postponeComp..

Languages 2020.04.26

kotlin의 lazy evaluation (sequence, map, filter)

5.3 지연 계산(lazy) 컬렉션 연산 map, filter 컬렉션 함수 결과 컬렉션을 즉시 생성한다 // 그냥 collection 함수 연쇄적으로 사용 people.map(Person::name).filter{it.startsWith("A")} // sequence 사용 people.asSequence() .map(Person::name) .filter{it.startsWith("A")} .toList() filter, map 모두 collection을 반환한다 collection의 크기가 커지면 위 연쇄 호출은 리스트 2개를 만들게 되어 효율이 떨어진다 각 연산이 컬렉션을 직접 사용하는 대신 시퀀스 사용하도록 변경해야 함 sequence 사용하는 경우 collection을 sequence로 변경 한..

Languages 2020.04.26

kotlin의 collection 관련 함수 (filter, map, groupby ,flatMap, 술어함수)

kotlin 에서의 collection 함수 API 여기에 등장하는 함수중에 코틀린에서 새로 만들어진 함수는 없다 👺 filter 와 map val list = listOf(1,2,3,4) println(list.filter{it %2 == 0}) println(list.map{it*it}) filter 함수 collection을 iteration하면서 주어진 lambda 에 각 원소를 넘겨서 true를 반환하는 원소만 모은다 예제 : 짝수만 출력하게 됨 filter 함수는 collection에서 원소를 제거한다 원소를 return 하지는 않는다 map 함수 원소를 return 해준다 예제 : 각 원소의 제곱값을 가진 collection을 반환한다 return값과 원본의 원소 개수는 같다 val peop..

Languages 2020.04.26

kotlin에서의 람다식과 멤버 참조 (lambda, ::, 값으로 표현된 함수)

kotlin에서의 람다식과 멤버 참조 (lambda, ::, 값으로 표현된 함수) 람다 다른 함수에 넘길 수 있는 작은 코드 조각 쉽게 공통 코드 구조를 라이브러리 함수로 뽑아낼 수 있다 람다 주 사용처 컬렉션 처리 람다 식은 java 에도 있다 (버전 8부터) 😎 람다 소개 : 코드 블록을 함수 인자로 넘기기 람다 이전의 방식 무명 내부 클래스 사용 (java) // 이름이 없는 클래스 (watchTV) 예시 abstract class TV { public abstract void powerOn(); } public class Test{ public static void watchTV(TV tv){ tv.powerOn(); } public static void main(String[] args){ wa..

Languages 2020.04.26