kotlin 에서 jackson 사용시 kotlin/reflect/KotlinReflectionInternalErrorjava.lang.NoClassDefFoundError: kotlin/reflect/KotlinReflectionInternalError 이런 에러를 내뿜는 경우가 있다. 나같은경우 코틀린은 1.2.10 을 사용하고있고, 스프링부트를 이용해서 작업하고있었는데 스프링부트에서 포함하고있는 jackson 이 2.8.10 이라서 코틀린 jackson 모듈도 동일 버전으로 추가했었다. compile("com.fasterxml.jackson.module:jackson-module-kotlin:2.8.10") 그리고 저 에러를 만난건데 코틀린 jackson 버전을 2.9 이상으로 올려주면 해결된다.j..
EPL 팀의 리그순위 정보를 담고있는 객체를 만든다고 생각해보자. 보통 순위페이지에 나와있는 정보는 경기 수, 승점, 승, 무, 패, 득실차가 있다. 이 데이터들을 담는 클래스를 정의하자. class Team{ private String name; private int playCount; private int victoryPoint; private int winCount; private int drawCount; private int loseCount; private int scorePoint; } 이 객체를 생성하고, 필드들을 주입해줘야한다. 간단하게 setter를 만들어서 주입할 수 있다. Team team = new Team(); team.setName("맨유"); team.setPlayCount(..
이전에 올렸던 포스팅중에 Custom Serializer, Deserializer 만들기 가 있었다. 작성해놓고 나 스스로도 자주 다시보며 유용하게 써먹었던 포스팅인데 이번에 한가지 추가적인 경우를 맞이했다. 해당 필드에 특정 애노테이션이 달려있으면 기본 Serializer 를 사용하고, 없을 경우엔 CustomSerializer 를 사용 이라는 경우였다. 일단 애노테이션이 붙었는지를 먼저 검사해야하는데 그럴땐 리플렉션을 쓸수밖에 없었다. 그런데 직렬화를 할때마다 리플렉션을 사용하는건 비용이 좀 크지않나 라는 생각이 들었다. 그리고 분명히 이런 고민을 전세계에서 꽤 많이 했을 것 같은데 너무 원시적으로 문제를 해결하려는게 아닌가 라는 생각에 이리저리 검색을 좀 해봤다. 역시 이런고민은 이미 수많은 지구인..
얼마전 사내에서 작업했던 내용이다. 간단한 코드긴하지만... 코드는 각색해서 해당 내용을 포스팅하고자 한다. 1. Utils 클래스1-1. Utils 클래스 생성 요구사항 * 현재 전화번호, 주민번호, 카드번호 데이터는 - 없이 순수 숫자로만 저장되어있다. * 해당 데이터를 노출할때 -를 추가하고싶다. 음...뭐 딱히 어렵지 않은 내용이다. 어떤 내용으로 작업할지 고민을 했고, 특정 상태에 얽매이는게 아니라 인자로 넘어오는 값의 양식만 변경하면 되니 정적 메서드로 만들어도 충분하다고 판단했다. 그렇게 FormatUtils 클래스가 추가됐다. class FormatUtils { private static final String TEL_NO_PATTERN = "(02|0[\\d]{2})([\\d]{3,4})..
1. JacksonAjax 통신을 할때는 Response Body에 데이터만 담아서 클라이언트로 전송하게된다. 이때 가장 많이 사용하는 포맷은 json 형태일텐데 자바 객체를 json 형태로 변환해주는 여러 라이브러리중 하나인 jackson을 살펴보려한다. 설정은 거의 할게없다. 스프링 프로젝트를 생성한 후 jackson-databind 의존성을 추가해준다. pom.xml org.springframework spring-webmvc 4.3.4.RELEASE com.fasterxml.jackson.core jackson-databind 2.8.8 그리고 컨트롤러를 하나 구현한다.@RestController public class JsonController { @GetMapping("") public Per..
얼마전 포스팅했던 Joda Time에 대해 사내발표를 진행했는데... 사내 프로젝트 내에서 Date타입으로 선언된 필드들을 Joda Time으로 변경하자는 의견이 나왔고, 다른 개발자들이 별다른 설정이나 추가코드를 작성할 필요없이 Joda Time 클래스를 사용할 수 있게 하라는 지시가 내려왔다. 이렇게까지 일을 벌일(?) 생각은 없었는데 그 작업을 맡게되었고 일단 날짜 데이터를 화면에서 보내면 LocalDate(혹은 LocalDateTime)로 자동으로 받을 수 있게끔 작업하는것부터 시작이 됐어야했다. 그 작업을 포스팅으로 남겨두려한다. 1. Spring Data Binding일단 Spring 컨트롤러는 매개변수로 변수를 넣어놓으면 알아서 해당 타입으로 값을 갖다 쓸 수있게 되어있다.@RequestMa..
스프링을 이용하여 개발하다보면 List나 Map같은 컬렉션 프레임워크로 이루어진 빈이 필요할때가 있다.보통은 컬렉션 프레임워크를 필드로 갖고있는 클래스를 생성하고 그 클래스를 빈으로 만들어서 해결하는 경우가 많은데(실제로도 그게 더 바람직한 방법일때가 많은것 같다.) 그런 래퍼클래스(Wrapper Class)가 아닌 컬렉션 클래스 그 자체로 빈을 생성해야하는 경우도 존재한다. 빈 설정파일에 이렇게 등록해주고 주입받으면 된다. 주입받을땐 이유는 모르겠지만 @Qualifier 로는 주입이 되지않았다. 일단 일하느라 바빠서ㅜㅜ 원인은 나중에 찾아보고 @Resources 애노테이션으로 주입받아 사용했다.
Spring의 RequestMapping 애노테이션을 구현해보고있는 중이다. 해당 애노테이션을 구현하려면 특정 패키지내의 클래스를 모두 읽어들여야 하는데 자바의 기본 리플렉션으로는 불가능했다.뭐 정확히 말하자면 불가능은 아니고 꽤나 코드량이 길어지는 문제가 발생했다. 패키지 이름으로 가져온다기보다 해당 디렉토리를 들어가서 파일들을 읽어오는 형식으로 짜야했어야해서...찾아보니 Reflections라는 라이브러리가 존재했다. org.reflections reflections 0.9.10 현재 최신버전인 0.9.10버전으로 의존성 추가해주고.. @Test public void 패키지_로드_테스트(){ Reflections ref = new Reflections(new ConfigurationBuilder() ..
프로젝트를 진행하는 와중에 팝업창에서 배열을 반환하고 부모창에서 그 배열을 가지고 값을 세팅하는 화면이 있었는데 기존 소스가 완성되어있는 상태에서 부모창에서 무조건 문자열만 반환이 가능한 상황이 생겼다.기존 소스를 최대한 건드리지 않는 상태로 진행을 해야 서로가 좋은 상황이었기에 배열을 문자열로 변환하고 다시 그 문자열을 배열로 변환하는 함수를 만들어봤다.그리 어려울건 없는 함수몇줄이지만 뭐랄까 처음으로 TDD에 입각한 방법으로 함수를 만들었고, 당장 프로젝트에서는 2차원배열이 끝이지만 기왕 만드는 김에 다차원 배열을 처리하기위해 개인적으로 어렵게 생각하는 재귀적 요소를 사용한게 내심 뿌듯해 블로그에 올리게됐다. 나중에 언제 다시 쓰게될지 모르니 사용방법을 미래의 나에게 전달하자면 첫번째 인자는 배열을,..
jQuery에서 제공하는 required는 html 태그들의 name속성으로 해당 validate를 체크하는것 같다. 그래서 해당 form 태그안에 name속성이 없는 태그가 있으면 has no name assigned 라는 에러가 떨어진다.그럴때 validate 함수에 전달하는 객체에 ignore : '*:not([name])' 속성을 넣어주면 에러가 발생안함.그런데 이건 매 화면마다 추가해줘야하고 공통적인 부분에서 처리해주는게 있는거같은데 그건 좀 더 찾아봐야겠다. $("#frm_main").validate({ignore : '*:not([name])',rules : {user_name : {required : true}} });
- Total
- Today
- Yesterday
- code
- toby
- JavaScript Core
- spring cloud
- TEST
- Kotlin
- Jackson
- Git
- http
- Design Pattern
- 정규표현식
- servlet
- JPA
- java
- Spring
- OOP
- frontcode
- programming
- javascript
- DesignPattern
- java8
- EffectiveJava
- generics
- go-core
- mariadb
- db
- backend개발환경
- MySQL
- clean code
- frontend개발환경
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |