반응형
프록시 프록시란 인터페이스 구현 클래스 및 그 인터페이스를 실행할 때 작성하는 기술 또는 그 작성된 인터페이스를 말한다. JDK 동적 프록시 프록시를 적용하기 위해 적용 대상의 숫자만큼 프록시 클래스를 만드는 것은 매우 힘든 일이다. 이 문제를 해결하는 것이 동적 프록시 기술이다. 동적 프록시로 개발자가 직접 프록시 클래스를 만들지 않아도 된다. 프록시 객체를 동적으로 런타임에 개발자를 대신하여 만들어준다. 또 동적 프록시에 원하는 실행 로직을 지정할 수 있다. 예제코드 1. 인터페이스와 그 인터페이스를 구현하는 구현체 작성 : CommandA, CommandAImpl, CommandB, CommandBImpl // CommandA 인터페이스와 그 구현체 public interface CommandA {..
리플렉션(Reflection) : 어노테이션 이용 어노테이션 취득 리플렉션으로 어노테이션의 값을 취득할 수 있다. 예제코드 테스트를 위해 어노테이션 작성 : @MyAnnotation package hello.proxy.reflection; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; // 어노테이션 보유 : RUNTIME 은 실행시에도 어노테이션 정보를 읽어올 수 있음 @Retention(RetentionPolicy.RUNTIME) // 디폴트 : CLASS // ..
리플렉션 (Reflection) 리플렉션은 class, constructor, field, method 등을 다루기 위한 java표준 API이다. 클래스나 메소드의 메타정보를 동적으로 획득하고, 코드도 동적으로 호출할 수 있다. 다음과 같은 클래스가 있다. 패키지 클래스 java.lang Class java.lang.reflect Constructor java.lang.reflect Field java.lang.reflect Method Spring 등의 프레임워크는 많은 내부처리에서 리플렉션을 이용하고 있다. 따라서 리플렉션을 이해하면 다음과 같은 장점이 있다. ・프레임워크의 소스 코드를 이해할 수 있다. ・소스 코드를 읽지않고도 프레임워크 내부의 처리를 이미지화 할 수 있다. ・스스로 프레임워크를 만..
1. 문자열을 자르는 메소드 split() 문자열 String 을 특정 문자로 자를때 사용할 수 있는 메소드가 split() 이다. 공백으로 문자열을 자를때, split(" ") 으로 자르면 되지만, 문자열이 끝나고 마지막에 붙는 공백은 얻어지지 않는다. 파라미터로 -1을 추가하는 것의 큰 차이는 문자열이 공백으로 끝날때의 공백을 취득하냐 여부이다. 마지막 공백갯수도 취득해야할 때는 split() 메소드에 파라미터로 -1을 주면 된다. 2. String.split(" ") vs String.split(" ", -1) public static void main(String[] args) { /** 공백 1개로 시작하고 끝나는 문자열 */ String str = " 안녕하세요 문자열을 split()메소드로 ..
Map 에서 key 값으로 value 값을 취득하는 경우 get() 메소드를 사용한다. 이때, Map 에서 key 가 존재하면 해당하는 key 의 value 값을 반환하고, 찾는 key 가 없거나 null 이면 null 을 반환한다. ■ get() 1. 예제코드 import java.util.HashMap; import java.util.Map; public class Main{ public static void main(String[] args) throws Exception { Map map = new HashMap(); // 추가 map.put("red", "빨강"); map.put("blue", "파랑"); map.put("purple", "보라"); // 취득 System.out.println(..