책에서 소개하는 예제를 통해서 스프링은 왜이렇게 생겼는가 이해해 볼수 있는 챕터 스프링의 철학 ejb 가 커지면서 잃어버렸던 객체지향을 다시 잘 적용해보자 ejb 가 많은 기능을 제공하지만 서비스로직에 컨테이너를 쓰기위한 코드들이 많이 침투됐다함 객체지향을 해야하니까 오브젝트에 많은 관심을 둔다. 오브젝트가 어떻게 생기고 없어지고 사용되는지 오브젝트를 다루는 베스트프랙티스를 프레임워크단에서 제공해버리기 첫번째, 관심사의 분리 왜 해야 하는가? 소프트웨어는 여러가지 요구사항에 의해 항상 변화하고 개발자는 변화를 어느정도 대비하면서 개발을 해야함 관심사를 분리하지 않으면 db 암호를 바꾸려고 모든 dao를 변경해야하는등 수정에 유연하지 못하게 됨 응집도 높고 결합도 낮은 코드를 만들기 위해 노력하자 User..
1. 작년 목표 평가 우선 작년의 목표들을 잘 이뤘는지 평가해본다. 1. 자취 ★★★ 올해 4월부터 자취를 시작했다. 자유를 위해 나왔지만 돈이 없으면 자유를 누릴수 없다는 엄청난 사실을 깨달았다. 빨리 나오고 싶은 마음에 집을 너무 성급하게 구한게 약간 아쉽다. 탈출을 위해 전세계약금을 열심히 모으고 있다... 그럼에도 자취를한 선택자체에는 만족하는 편이다. 2. 테스트코드 많이 쓰기, 스터디하기 ★★★★★ 단위테스트 책으로 사내스터디를 모집해서 끝까지 잘 마쳤다. 배운것을 바탕으로 실무에도 테스트를 많이 작성했다. 많은건지 적은건지 모르겠지만 혼자 100개 이상의 테스트를 작성했다. 테스트 작성은 하면 할수록 생산성 향상을 많이 느낀다. 특히 복잡한 케이스들이 많이 나오는 정책들은 머릿속에 정돈해서 ..
실무중에 클라이언트에서 request를 form-url-encoded 방식으로 보내는데 그중에 배열의 표기가 [ ] 를 사용할때 매핑에러가 났었다 list[]=1&list[]=2 이런식으로 배열을 url 방식으로 표기할때 명확한 표준이 없는 것 같다. list=1&list=2도 가능하다 @RestController class TestController { @PostMapping("/url-encode") fun urlEncode(body: TestBody): String { println(body) return "ok" } @PostMapping("/json") fun json(@RequestBody body: TestBody): String { println(body) return "ok" } } da..
class Test(){ fun hi(){ println("hi") } } var test: Test? = Test() fun ifFunc(){ if(test != null){ println(test!!.hi()) // 가변이기 때문에 스마트캐스팅이 불가능 } } fun letFunc(){ test?.let{it.hi()} } 이렇게 가변 변수이지만 public static final void ifFunc() { if (test != null) { Test var10000 = test; Intrinsics.checkNotNull(var10000); var10000.hi(); Unit var0 = Unit . INSTANCE; System.out.println(var0); } } public static ..
이펙티브 코틀린 아이템1 에서 "값을 사용하는 시점에 따라서 다른 결과가 나올 수 있기 때문입니다" 와 함께 보여준 예제가 잘 와닫지 않아서 예제를 만들고 자바로 변환해봄 fun nameOrNullByRandom(): String? { return listOf(null, "huni").random() } val nameGetter: String? get() = nameOrNullByRandom() val nameFinalProperty: String? = nameOrNullByRandom() fun main() { if(nameGetter != null){ println(nameGetter!!.length) // 캐스팅 안됌 } if(nameFinalProperty != null){ println(nam..