본문 바로가기

Programing/JVM(Java, Kotlin)

(97)
[annotaion] javax.annotation.Nullable 파라메터로 객체를 넘겼을 때 다음과 같은 코드는 잠재적으로 예외가 발생할 수 있다.public long apply(@Nullable Item item) { return item.getPrice(); }만약 item이 null로 넘어갔을 경우 getPrice 메서드를 호출하는 순간 NullPointerException이 발생할 것이다. 인자에 위와 같이 @Nullable로 표시를 할 수 있다.반면에 반대의 경우에는 @Nonnull으로 표시할 수 있다. 이러한 것들은 JSR305 스펙에 의한 것들로 다음과 같은 것들이 있다.CheckForNullCheckForSignedCheckReturnValueDetaintedMatchesPattern$CheckerMatchesPatternNonnegative$Check..
[mokito] any~ 정리 어떤 임의의 리스트import static org.mockito.Matchers.anyList;anyList(); 대신에import static org.mockito.Matchers.anyListOf;anyListOf(CouponCancel.class);
guava MyBatis에서 괜찮은 쓰임새 구아바: https://github.com/google/guava iBatis에서 queryForList를 사용할 때 파라메터 클래스는 하나만 가능하다.여러개 이상을 넘길 경우에는 클래스를 만들던지 컬렉션에 넣게 된다. 아래와 같은 코드가 있다고 치면// String id, nameMap params = new HashMap();params.put("id", id);params.put("name", name);// params는 인자로 쏙 구아바를 이용하면 세 줄이, 다음과 같이 한 줄로 가능하다.ImmutableMap.of("id", id, "name", name) ImmutableMap of의 오버로딩이 여러개 있는데 인자가 가장 많은 것의 형태가(K k1, V v1, K k2, V v2, K k3,..
[IntelliJ IDEA] lombok 그게 뭐지? 기존에 Eclipse에서 IntelliJ로 개발환경을 갖추는데 새로운 라이브러리(?)가 등장했다.이름하여 lombok. 뭔가 이름이 촌스럽긴 한데 (인도네시아에 이런 이름의 섬이 있다. 위키백과)나름 유용하게 사용할 수 있는 기능이 있다. 공식사이트: http://projectlombok.org/관련 블로그 글들: https://blogs.idincu.com/dev/project-lombok과-그-사용법/ http://edoli.tistory.com/99 http://gitblog.ihoney.pe.kr/blog/2013/01/23/use-lombok-annotation-in-java-project/ 위의 블로그의 내용은 서로 비슷한 내용이고 결론 또한 비슷하다. 따라서 나는 중복해서 적을 필요가 없겠다..
[스프링] 스프링 레퍼런스 4 한글 작업中 [기존 레퍼런스 한글 번역 및 링크들]Version 1.2.2 - http://ldg.pe.kr/framework_reference/spring/ver1.2.2/html/index.html > http://pds4.egloos.com/pds/200707/24/20/spring-reference-rogerrb.pdf3.1 - http://blog.outsider.ne.kr/tag/spring_reference_documentation
[HTTP & Spring MVC] 파일 다운로드 구현시 파일명 지정 HTML에서 a 엘리먼트로 하이퍼링크를 지정을 했을 경우 다운로드되는 파일의 이름은 URL 주소의 이름이 파일이다. 예를 들어 /download?filename=a.txt 라는 HTTP GET을 했을 경우 다운로드 받는 파일명은 a.txt인데 실제 받는 파일명은 download라는 이름이 된다. 이럴 경우 HTTP 응답 헤더중 Content-Disposition 를 지정해주면 된다. 바이너리일 경우를 위해 Content-Transfer-Encoding도 같이 지정한다. HttpServletResponse response를 사용한다면,,, response.setHeader("Content-Disposition", "attachment;filename=\""+filename+"\";"); response.s..
[후펴파는 스프링] 스프링 컨테이너 계층 정리 스프링 프레임워크는 객체지향 원리를 지향하다 보니 계층적이고 인터페이스도 오발라게 많다.클래스다이어 그램으로 그려두면 한눈에 볼 수도 있고 정리를 한다는 생각으로 만들어보았다.스프링 버전은 4.1.4.RELEASE 기준이다. 크게 우선 두 가지 컨테이너(BeanFactory와 ApplicationContext라는 인터페이스)로 구분할 수 있을 것이다.간단하게 패키지적인 관점에서 보면 아래와 같다.하지만 객체지향개념중에 클래스나 인터페이스에서 가장 중요한 것은 어떤 역할을 수행하느냐이다. 이런 역할들은 메소드를 통해서 정해진다. 실제 계층구조를 인터페이스 메소드를 포함해서 그려보면 아래와 같이 복잡해진다. (이미지가 커서 글씨가 작으므로 클릭하여 확대해서 보거나 다운받아 보길 권장한다.)또한 인터페이스만으..
후벼파는 자바 - 어노테이션의 내부 원리 자바를 어느정도 해보신 분들은 알겠지만 @를 붙여서 사용하는 어노테이션을 써보았을 것이다.어노테이션이 어떤식으로 동작하는지 궁금해서 몇 가지 테스트를 해보았다. 실습을 했던 코드는 Ayoub El Abbassi 님의 블로그의 "How to add Annotations at Runtime to a java class method using Javassist?"글의 코드를 참고로 하였다. 우선 코드를 만들고package annotation; import java.lang.annotation.ElementType;import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;import java.lang.annotation.T..