-
[AOP] 스프링 프록시와 프록시 팩토리
프록시 패턴을 사용할 때 프록시 클래스를 직접 생성한다면 엄청나게 많은 클래스를 개발자가 직접 생성해야 할 것이다 동적 프록시 기술을 사용한다면 개발자가 직접 프록시 클래스를 생성할 필요 없이 런타임시 알아서 생성해서 사용할 수 있다 1. JDK Dynamic 프록시 인터페이스 기반 프록시 리플렉션으로 프록시 객체를 생성 public interface AInterface { String call(); } @Slf4j public class AImpl implements AInterface { @Override public String call() { log.in...
-
구조 (3) - 데코레이터(Decorator) 패턴
객체의 결합을 통해 기능을 동적으로 유연하게 확장할 수 있게 해주는 패턴 부가기능 추가 프록시 패턴과 데코레이터 패턴은 모양이 거의 같다. 의도에 따라 패턴을 구분할 수 있다. 프록시 : 접근을 제어 하기 위한 프록시 제공 데코레이터 : 부가 기능을 동적으로 추가하고 기능 확장을 위한 유연한 대안 제공 구현 interface public interface Component { String request(); } RealComponent 실제로 꾸며지는 타켓 객체 public c...
-
[JAVA] equals와 hashCode 재정의
사용자 정의 클래스를 만들 때 hashCode(), equals(), toString() 를 재정의한다. 여기서 hashCode(), equals()는 객체의 동등성과 관련이 있다 동일성(identity) : 두 객체가 완전히 같다는 것을 의미한다 객체의 인스턴스 주소를 비교 == 를 사용 동등성(equality) : 두 객체의 정보가 같다는 것을 의미한다 (논리적 동등성) 객체 내부의 값을 비교 equals()를 사용 단, 기본 타입(Primitive)는 ==로 값을 비교할 수 있다 equals() 동...
-
Lombok 롬복
장점 어노테이션을 기반으로 코드를 자동생성하여 생산성 향상 어노테이션 @Getter, @Setter getter/setter 메서드 생성 @Setter의 경우 Entity에서는 사용을 지양해야 한다 Setter를 통해 엔티티의 데이터를 변경하면 변경 포인트가 많아져 유지보수 하기가 힘들어진다 변경 메서드를 만들어 데이터를 변경해 주는 것이 좋다 @NonNull 해당 변수가 null로 넘어오면 NullPointException을 발생시킨다 롬복 대신 Spring의 @NonNull을 사용하자 @NoArgsConstructor 기본 생성...
-
알고리즘을 위한 자바
0. 시간복잡도 초당 100,000,000(1억)번 연산이 가능하다 ★시간 제한이 1초인 경우 N의 범위 시간복잡도 10 O(n!) 20 O(2n) 500 O(N3) 10,000 O(N2) 5,000,000 O(NlogN) 100,000,000 O(N) 1. 자료구조 1. List (1) Array (1) ...