분류 전체보기

팩토리빈과 팩토리 메소드 팩토리메소드를 통한 인스턴스 생성은 XML에서 어떻게 표현할 수 있을까? (spring xml factory) 생성자 대신 오브젝트를 생성해주는 코드의 도움을 받아서 빈 오브젝트를 생성하는 것을 팩토리 빈이라고 부른다. 빈 팩토리와 비슷하지만 전혀 다르니 혼돈 ㄴㄴ 팩토리 빈 자신은 빈 오브젝트로 사용되지 않는다. 대신 빈 오브젝트를 만들어주는 기능만 제공해줄 뿐이다. 팩토리 기능을 가진 빈을 통째로 사용하는 방법도 있지만, 특정 빈이나 클래스의 팩토리 메소드를 사용해서 빈을 등록하는 방법도 있다. 1. FactoryBean 인터페이스 new 키워드나 리플렉션 API를 이용해 생성자를 호출하는 방식으로는 만들 수 없는 JDK 다이내믹 프록시를 빈으로 등록하기 위해 FactoryB..
초기화 메소드(initialization method) 초기화 메소드(initialization method)는 빈 오브젝트가 생성되고 DI 작업까지 마친 다음에 실행되는 메소드를 말한다. 오브젝트의 기본적인 초기화 작업은 생성자에서 진행하면 된다. 하지만 DI를 통해 모든 프로퍼티가 주입된 후에야 가능한 작업도 있다. 이런 경우 사용할 수 있는것이 초기화 메소드다. 초기화 메소드를 지정하는 방법은 네 가지가 있다. 1. 초기화 콜백 인터페이스InitializingBean 인터페이스를 구현해서 빈을 작성하는 방법이다. InitializingBean의 afterPropertiesSet() 메소드는 이름 그대로 프로퍼티 설정까지 마친 뒤에 호출된다.하지만 권장되지 않는다. 빈 코드에 스프링 인터페이스를 노출..
StringBuffer아래의 코드를 살펴보자1234567public String joinWords(String[] words) { String sentence = ""; for(String word : words) { sentence += word; } return sentence;}Colored by Color Scriptercs이 코드는 문자열 배열을 하나로 합쳐서 리턴해주는 함수이다. 언뜻보아서는 아무런 문제가 없어보이지만 이 코드의 실행 시간은 어떻게 될까?간단하게 문자열 길이는 전부 x라고 하고 문자열 개수는 n이라고 해보자. 문자열을 연결할때 마다 새로운 문자열 객체가 만들어지고 (sentence), 연결할 문자열의 값이 문자 단위로 복사된다. 그러므로 첫 번째 루프에서 x개의 문자가 복사되고..
ArrayListArrayList는 동적으로 크기가 늘어나는 배열이다. 그러면서도 O(1)의 접근시간(access time)을 유지한다. 배열이 가득 차는 경우, 그 크기가 두배 늘어나도록 구현되어 있다. 크기를 두배 늘리는 시간은 O(n)이지만 자주 일어나지 않기 때문에 O(1)시간이 유지된다고 보면 된다.123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778public class CustomArrayList { private int size = 0; private static final int ..
해시 테이블해시 테이블(hash table)은 효율적인 탐색을 위한 자료구조로 키(key)를 값(value)에 대응시킨다. 해시 테이블을 간단히 구현하는 경우, 배열과 해시 함수(hash function)만 있으면 된다.객체와 키를 해시 테이블에 저장할 경우, 해시 함수가 키를 정수값으로 대응 시키는데, 이 정수 값이 배열의 첨자(index)로 쓰인다. 객체는 배열의 해당 첨자 위치에 저장된다.하지만.. 이것은 정상적으로 작동하지 않을 수 있다. 왜냐하면 해시 함수가 계산하는 모든 키 값이 유일(unique)해야 하기 때문이다. 해시함수 후에 나오는 결과가 동일한 결과가 나올 경우 우리는 이것을 충돌(collision)이라고 한다. 충돌(collision)을 피하려면 모든 키 값을 고려해서 배열을 극도로..
스프링 컨테이너는 초기화 과정에서 몇 가지 빈을 기본적으로 등록해준다. ApplicationContext, BeanFactory스프링에서는 컨테이너 자신을 빈으로 등록해두고 필요하면 일반 빈에서 DI 받아서 사용할 수 있다.스프링 컨테이너인 애플리케이션 컨텍스트는 ApplicationContext 인터페이스를 구현한 것이기 때문에 일반 빈에서 사용하고 싶다면 ApplicationContext 타입의 빈을 DI받도록 해주면 된다. (또한 ApplicationContext는 BeanFactory 인터페이스의 구현체)123456@AutowiredApplicationContext context; public void do(){ this.context.getBean(...); // 애플리케이션 컨텍스트를 직접 사..
스프링 프로퍼티 값 설정 방법 DI를 통해 빈에 주입되는 것은 두가지가 존재한다. (다른 빈 오브젝트의 레퍼런스, 단순 값) 단순 값은 스프링이 관리하는 빈이 아닌 모든것을 의미한다. @Value 애노테이션의 주요 용도는 자바 코드 외부의 리소스나 환경정보에 담긴 값을 사용하도록 지정해주는 데 있다. @Value("#") String username; 이 때는 database.username 속성이 정의된 database.properties파일을 XML에 지정해둬야 한다. 스프링 프로퍼티 파일을 이용한 값 설정 설정정보를 XML로 분리해두면 빈 클래스나 의존관계 정보를 소스코드 수정 없이도 간단히 조작할 수 있다. 때로는 XML에서 다시 일부 설정정보를 별도의 파일로 분리해두면 유용할 때가 있다. 서버환..
대화Where are you planning to go on a vacation?* 휴가때 어디 가실 생각이에요?I'm planning to go to New York these holidays.*이번 휴가에는 뉴욕에 갔다 오려고요. 문장I have 3 days left on my annual leave. * 연차가 사흘 남았어요.Did you have a good holiday?* 휴가는 잘 보내셨어요?I'm thinking of going there on a long weekend.*징검다리 휴일을 이용해서 다녀올 생각이에요. annual leave - 연차long weekend - 징검다리 휴일 출처 : 네이버 글로벌회화
Key 인터페이스JCA에서 지원하는 모든 키는 Java.Security.Key 인터페이스로 추상화된다.Key 인터페이스는 getAlgorithm(), getFormat(), getEncoded() 를 제공하며, 제한된 키정보에 대한 접근만 허용하고 있다.1234567KeyPair keyPair = rsaUtil.generateKeyFair();PrivateKey privateKey = keyPair.getPrivate();PublicKey publicKey = keyPair.getPublic(); log.info("algorithm : {}", privateKey.getAlgorithm());log.info("format : {}", privateKey.getFormat());log.info("encod..
JCA(Java Cryptography Architecture)JAVA에서의 보안 관련 기능 중에서 JCA(Java Cryptography Architecture)는 핵심이라고 할 수 있다.JCA는 프로바이더 구조를 사용하여 보안과 관련된 다양한 API를 제공한다.ex) 전자서명(Digital Signature), 메시지 다이제스트(Message Digest), 인증서 유효성 검사(Certificate Validation), 키생성 등등정확히 말하자면 디자인 패턴은 아니다. Factory 패턴과 유사하나 외부설정에 따라 다른 객체를 생성하는 패턴을 칭한다. (나쁜 패턴이라고 함)하지만 잘 작성된 오픈소스 프로젝트들에서 이러한 구현을 꽤 볼수있다. => 더 알아봐야할듯 설계 원칙JAVA 플랫폼을 기반으로 ..
깡냉쓰
'분류 전체보기' 카테고리의 글 목록 (52 Page)