전체 글
-
junit Rules카테고리 없음 2023. 4. 22. 14:39
단위 테스트를 만드는 것은 좋다. 버그를 쉽게 찾을 수 있을 뿐더러 코트를 리팩토링 할 때에도 좀 더 효과적으로 할 수 있다. 하지만 완벽하게 단위테스트 케이스를 만들기는 쉽지 않다. 시간이 부족할 수도 있고, 빠진 케이스도 있을 수 있고.. 솔직히 만들기 귀찮아서 안만들 경우도 있을 것이다. 또 다른 이유는 어떻게 테스트를 만들까 하는 고민도 있을 수 있다. 일반적은 Spring mvc(필자가 자주 사용하므로) 경우에는 패턴이 딱 정해져있다. Controller Service, Repository(DAO) 등 기본적인 테스트는 패턴이 비슷하기에 별 고민 없이 만들 수 있다. 하지만 라이브러리 또는 공통으로 사용할 목적으로 코드를 만든다면 테스트 코드를 만드는 작업은 고민을 조금 하면서 만들어야 할 지도..
-
Spring 4.3 ObjectProvider카테고리 없음 2023. 4. 22. 14:39
이번 포스팅은 Spring 4.3에서 추가된 인터페이스에 대해서 알아보자. 다 알아보기에는 필자도 어느 것이 추가 된지 정확하게 몰라서 다 알아보지는 못하고 제목에 써 있는 그대로 ObjectProvider 대해서 간략하게 살펴보자. 나중에 더 살펴봐야 겠다. ObjectProvider을 알아보기전에 ObjectFactory을 잠깐 살펴보자. ObjectFactory은 org.springframework.beans.factory 패키지 안에 들어 있고 메서드(getObject())가 한개 존재하며 이 메서드는 해당하는 인스턴스를 리턴하는 그런 메스드이다. 이 인터페이스는 인터페이스명 그대로 팩토리 빈을 생성 할 때 사용하는 인터페이스이다. ObjectFactoryCreatingFactoryBean 클래스..
-
kotlin (코틀린) 시작해보기 (7)카테고리 없음 2023. 4. 22. 14:39
오늘은 코틀린을 마지막으로 배워보자. 오늘 이 시간에는 뭘 딱 정해서 배우는 것이 아니라 이것저것 빠진 것이나 기타 여러가지들을 배워보자. Operator Overloading 말 그대로 연산자 오버라이딩이다. 우리가 흔히 아는 연산자가 맞다. 그 연산자를 다시 재정의 할 수 있다. 우리는 코드로 보는게 더 좋지 않는가? 코드를 보자. class Account(val age: Int) { operator fun plus(account: Account): Account { return Account(age + account.age) } operator fun minus(account: Account): Account { return Account(age - account.age) } //... overri..
-
kotlin (코틀린) 시작해보기 (6)카테고리 없음 2023. 4. 21. 15:27
오늘은 코틀린의 함수에 대해서 살펴보도록하자. 함수 함수 선언 및 사용 함수 선언은 자바와는 달리 fun을 사용해서 함수를 선언한다. fun function(x: Int): Int { return x * 2 } 위와 같은 함수가 있을 경우 사용법은 아래와 같다. val result = function(2) println(result) 쓰는 법은 일반 다른 언어와 비슷한 문법을 가지고 있다. 또한 위의 함수는 expression 으로도 나타낼 수 있다. fun function(x: Int) = x * 2 expression으로 쓸 경우에는 return 타입을 명시해주지 않아도 되며 return 키워드는 사용하지 않아야 한다. Infix notation infix 키워드를 사용해서 중위(Infix) 표현으로..
-
kotlin (코틀린) 시작해보기 (5)카테고리 없음 2023. 4. 21. 15:27
오랜만에 코틀린 포스팅을 해보자! 이번시간에는 코틀린의 data class 와 object에 대해서 알아볼 예정이다. data class 우리는 가끔 데이터만 저장하고 다른건 하지 않을 때가 많다. 예를들어 java의 getter, setter, hashcode/equals, toString 등 기계적인 작업을 할 때가 많다. 그래서 우리는 java 라이브러리인 lombok을 사용하긴 한다. java는 서드파트에서 지원해주지만 코틀린 경우에는 언어 자체에서 지원해 준다. 기본 문법은 아래와 같다. data class User(val id: Long, val name: String) class 앞에 data 키워드를 넣어 주면 된다. data class는 컴파일러가 자동으로 아래와 같은 메서드를 알아서 만..
-
토비의 봄 (더블 디스패치)카테고리 없음 2023. 4. 21. 15:27
이번 시간에는 저번시간에 이어서 더블 디스패치에 대해서 알아보자. 더블 디스패치라는 용어는 자바가 나오기 훨씬 전에 어떤 논문으로 발표된 용어이다. 내 기억에는 내가 태어날 때 나왔으니까 1986년도에 논문으로 발표된 것으로 기억한다. 굳이 자바뿐만이 아니라 싱글 디스패치인 언어에는 모두 포함되는 내용인 듯 싶다. 더블 디스패치 (Double Dispatch) 페이스북, 트위터에 사진과 텍스트를 올려주는 그런 요구사항이 들어왔다고 가정하자. 그래서 아래와 같이 만들었다. interface Post { void postOn(SNS s); } static class Text implements Post { @Override public void postOn(SNS s) { System.out.println(..
-
토비의 봄 (재사용성과 다이나믹 디스패치)카테고리 없음 2023. 4. 21. 15:27
오늘은 토비님이 강의 하신 내용을 정리해보려고 한다. 이야기할게 더 있긴 하지만 오늘은 재사용성과 다이나믹 디스패치에 대해서만 살펴보자. dependency dependency 란 무엇인가? dependency를 네이버 사전에서 찾아보면 의존, 종속 이라는 단어가 제일 먼저 나온다. 그럼 의존이란 무엇인가? 다시 네이버 사전을보자. 그럼 다른 것에 의지하여 존재함. 이라고 설명한다. 말그대로 어떤것에 의지하는 것을 말한다. 객체지향 프로그램에서 의존이라하면 A(클래스)가 B(클래스)를 의존한다고 말한다. 즉 아래와 같은 상황이다. A(클래스) - - - > B(클래스) 다이어그램으로 그리기는 귀찮아서 그냥 위와 같은 표현을 했다. 저 말은 즉 A가 B에 의존하고 있다라고 설명 할 수 있다. 그럼 의존 관..
-
kotlin (코틀린) 시작해보기 (4)카테고리 없음 2023. 4. 21. 15:27
이번시간에는 코틀린의 프로퍼티와 인터페이스에 대해서 알아보자. 프로퍼티 경우에는 조금 다른점이 있는데 인터페이스같은 경우에는 자바와 거의 비슷하므로 간단하게만 설명해보겠다. 프로퍼티 프로퍼티 선언 class Product { val id :Long? = null val name : String? = null val price : BigDecimal? = null } null은 컴파일 에러만 피하기 위해 작성하였다. 여기서는 중요한게 아니므로 주의깊게 보지 않아도 된다. 실제 저런 코드는 거의 사용할 일이 없을 듯하다. 코틀린의 경우에는 위와 같은 형식으로 프로퍼티를 작성할 수 있다. val 로 선언된 경우에는 읽기만 가능하고 var 로 선언한 것은 쓰기 읽기 모두 가능하다. var product = Pr..