분류 전체보기
-
스프링 - 오픈소스(JCapcha) 이용해보기..캡차 서비스Etc 2016. 3. 17. 16:15
※ 해당 게시 글은 이미지(텍스트) 기반 만을 설명※ 목적 : JCapCha를 사용하기 앞서 bean 설정에 대하여 짚고 넘어가기 위해서이고 예제에 나오느 클래스 들에 대해 공부하기 위함이다. 우리가 웹의 세션을 사용하기 위해서 tocmat 같은 was를 이용하듯이 캡차도 엔진을 설정해야 한다.해당 설정은 다음과 같이 bean을 만들기 바란다. 클라이언트에게 노출시킬 이미지(텍스트)를 만들어 내기 위한 설정을 시작해보려한다. GenericCaptchaEngine 은 CapchaEngine 이라는 Interface 를 Implement 하여 구현한 클래스이다. 앞서 말했듯이 소리보다는 이미지(텍스트) 형식만을 설명하는게 주 목적이기 때문에 수많은 클래스중에 GimyFactory를 bean 으로 등록하여 참..
-
[Effective Java 2/E] 규칙49 객체화된 기본 자료형 대신 기본 자료형을 이용하라My-Book(History) 2016. 2. 28. 20:24
기본 자료형과 객체화된 기본 자료형 세가지 큰 차이점 1) 기본 자료형은 값만 가지지만 객체화된 기본 자료형은 값 외에도 신원(identity)을 가진다는 것이다. 따라서 객체화된 기본 자료형 객체가 두 개 있을때, 그 값은 같더라도 신원은 다를 수 있다. 2) 기본 자료형에 저장되는 값은 전부 기능적으로 완전한 값 이지만, 객체화된 기본 자료형에 저장되는 값에는 그 이외에도 아무 기능도 없는 값, 즉 null이 하나 있다는 것이다. 책을 읽으면서 알게된 중요한 Tip 1) 객체화된 기본 자료형에 == 연산자를 사용하는 것은 거의 항상 오류라고 봐야한다. 2) 기본 자료형과 객체화된 기본 자료형을 한 연산 안에 엮어 놓으면 객체화된 기본 자료형은 자동으로 기본 자료형으로 변환된다.(내 생각 : Auto-..
-
[Effective Java 2/E] 규칙43 null 대신 빈 배열이나 컬렉션을 반환하라My-Book(History) 2016. 2. 28. 20:05
Cheese[] cheeses = shop.getCheeses();if(cheeses != null && Arrays.asList(cheeses).contains(Cheese.STILTON))System.out.println("jolly good , just the thing."); null이 반환되지 않는다면 아래와 같이 할 수 있었을 것이다. if(Arrays.asList(cheeses).contains(Cheese.STILTON))System.out.println("jolly good , just the thing."); 빈 배열이나 컬렉션을 반환하는 대신 null을 반환하는 메서드를 사용하면 이런 상황을 겪게 된다.이런 메서드는 오류를 쉽게 유발한다. 클라이언트가 null 처리를 잊어버릴 수 있기..
-
[Effective Java 2/E] 규칙42 varargs는 신중히 사용하라My-Book(History) 2016. 2. 28. 19:53
자바 1.5부터 가변 인자 메서드라고 부르는 varargs메서드가 추가되었다. 동작원리 : 클라이언트에서 전달한 인자수에 맞는 배열이 자동 생성 -> 모든 인자가 해당 배열에 대입 -> 마지막으로 해당 배열이 메서드에 인자로 전달 varargs는 임의 개수의 인자를 처리하는 메서드를 만들어야 할 때 효과적이다 (해당 위 내용을 내가 이해한대로 작성한 내용 : 해당 인자를 필요에 따라 사용하지 않는것이 아닌 반드시 사용할 수 있도록 설계할것!!)
-
[Effective Java 2/E] 규칙2 생성자 인자가 많을 때는 Builder 패턴 적용을 고려하라My-Book(History) 2016. 2. 20. 22:25
1.텔레스코핑 패턴Telescoping Constructor Pattern- 필수 인자만 받는 생성자를 하나 정의하고, 선택적 인자를 받는 생성자를 추가하는패턴을 의미한다 ex)public class Telescoping {private String name;private int age; public Telescoping (String name, int age ) { this.name = name;this.age = age; }} 텔레스코핑 패턴은 잘 동작하지만 인자 수가 늘어나면 클라이언트 코드를 작성하기가 어려워지고 무엇보다 읽기 어려운 코드가 되고 만다. 2.자바빈 패턴 - 인자 없는 생성자를 호출하여 객체부터 만든 다음, setter 메소드 들을 호출하여 필수 필드뿐 아니라 선택적 필드의 값들까지..
-
CGLIB 란?Spring(스프링)/AOP 2016. 2. 17. 17:32
CGLib 소개 CGLIB는 코드 생성 라이브러리로서(Code Generator Library) 런타임에 동적으로 자바 클래스의 프록시를 생성해주는 기능을 제공한다. CGLIB를 사용하면 매우 쉽게 프록시 객체를 생성할 수 있으며, 성능 또한 우수하다. 더불어, 인터페이스가 아닌 클래스에 대해서 동적 프록시를 생성할 수 있기 때문에 다양한 프로젝트에서 널리 사용되고 있다. 예를 들어, Hibernate는 자바빈 객체에 대한 프록시를 생성할 때 CGLIB를 사용하며, Spring은 프록시 기반의 AOP를 구현할 때 CGLIB를 사용하고 있다. 아래는 CGLib를 이용한 객체 만들기 자료가 링크되어있다. CGLIB를 이용한 프록시 객체 만들기
-