- JPA Entity Default ConstructorstarryeyeJPA 의 공식 문서 JSR 338, Java Persistence API 를 보면.. 이런말이 나온다. 2.2 version https://download.oracle.com/otn-pub/jcp/persistence-2_2-mrel-spec/JavaPersistence.pdf?AuthParam=1686147162_93e6225ea2a6979ada32934da41475b1 즉, 엔티티 클래스는 Default 생성자를 반드시 가져야한다. (생성자의 접근지정자는 public or protected) 물론 표준 스팩일 뿐이므로 JPA 의 구현체 마다 다를 수 있다. 오늘은 이 부분에 대해 알아보자.. JPA 의 Entity 생성 방식 DB 에서 데이터를 읽고 Entity 를 반환해주려면.. JPA Entit..
- 2023-06-07 23:57:42
- Spring에서 프록시 사용 6starryeye지난 포스팅에서는 빈 후 처리기(BeanPostProcessor) 인터페이스를 구현하여.. 프록시를 스프링 빈 저장소에 원본 객체 대신 집어 넣을 수 있었다. (개발자의 개발 대상 : Advisor, BeanPostProcessor) 스프링은.. 역시 개발자를 편하게 해준다.. 스프링은.. 이미.. 프록시를 생성하기 위한 빈 후처리기를 만들어서 제공한다. -> AnnotationAwareAspectJAutoProxyCreator 이다. -> 따라서, 개발자는 Advisor만 개발하면 된다. 이를 위해서.. 아래 라이브러리를 추가 해주자. implementation 'org.springframework.boot:spring-boot-starter-aop' 해당 라이브러리를 추가하면 스프링 부트가 AOP 관..
- 2022-11-29 00:35:41
- Spring에서 프록시 사용 5starryeye직전 포스팅에서.. ProxyFactory를 사용하여 프록시 객체를 생성하고 적용하는 방법의 문제점을 다시 적어보겠다.. 1. 수동 빈 등록 시, @Configuration에서 ProxyFactory를 통해 일일이 프록시를 생성하고 리턴 해줘야함.. 2. 컴포넌트 스캔을 통해 자동 빈 등록을 사용하는 클래스는 프록시를 적용할 수 없음 -> 스프링 컨테이너에 타겟 객체가 직접 등록이 되어버려서 개발자가 손쓸수가 없는 상황 이 문제점은.. 스프링에서 제공하는.. 빈 후 처리기(BeanPostProcessor) 로 해결할 수 있다. 빈 후 처리기는.. 스프링이 빈 저장소에 등록할 목적으로 생성한 객체를 빈 저장소에 등록하기 직전에 조작하고 싶을 때 사용한다. -> 다른 객체로 바꿔치기 가능..(프록시로..) ..
- 2022-11-20 20:16:54
- Spring에서 프록시 사용 4starryeye앞선 포스팅에서 JDK 동적 프록시 기술과 CGLIB 동적 프록시 기술에 대하여 알아 봤다. 두 기술은 동일하게 프록시라는 기술을 도입하게 해주지만.. JDK 동적 프록시 기술은 인터페이스가 있어야 하고.. CGLIB는 구체 클래스로 프록시를 만들어 낸다.. 그래서 사용법이 달랐다.. 개발자는 편해지고 싶다.. 인터페이스가 있다면 JDK 동적 프록시가 적용되고 구체클래스만 있다면 CGLIB가 적용되게 알아서 해주는건 없나? -> 스프링은 역시 이미 제공하고 있다. 바로 프록시 팩토리 ! 프록시 팩토리에 대해 알아보자.. 선 요약 Advice : 프록시 로직이 들어가고 실제 target 객체 메서드를 호출 Pointcut : 특정 조건이 맞을 때만 프록시가 적용되도록 해줌 프록시에 추가할 로직은 기존에....
- 2022-11-19 17:07:36
- Spring에서 프록시 사용 3starryeye이번 포스팅에서는 CGLIB를 통한 동적 프록시 기술에 대해 알아보겠다. JDK 동적 프록시 기술에서는 인터페이스가 있어야 동적으로 프록시를 만들 수 있는 제약 사항이 있었다.. 이를 위한.. CGLIB 동적 프록시 기술!! -> 구체 클래스를 상속해서 프록시를 만든다. CGLIB는 바이트 코드를 조작하여 동적으로 클래스를 생성하는 기술을 제공하는 라이브러리이다. CGLIB는 원래 외부 라이브러리 이지만.. 스프링 프레임워크가 스프링 내부 소스 코드에 포함하여.. 따로 라이브러리 추가 없이 사용 가능 하다. JDK 동적 프록시의 InvocationHandler 인터페이스와 비슷하게.. CGLIB 동적 프록시는 MethodInterceptor 인터페이스를 제공한다. 역시.. reflection 기술을 사용..
- 2022-11-14 20:40:52
- Spring에서 프록시 사용 2starryeye이번 포스팅에서는 JDK 동적 프록시에 대해 알아보겠다. 이전 포스팅까지는.. 적용 대상의 숫자 만큼 프록시 클래스를 직접 만들어 줘야 했다.. -> 프록시의 코드는 동일하지만... 적용 대상이 다르기 때문에 적용 대상 갯수 만큼 모두 만들어줘야 했다.. 이를 해결하는.. 동적 프록시 기술! 동적 프록시 기술을 사용하면 개발자가 직접 프록시 클래스를 만들지 않아도 된다.. (런타임에 객체를 동적으로 만들어준다...) 그 중.. JDK 동적 프록시는 인터페이스 기반으로 프록시를 동적으로 만들어준다. -> 따라서 인터페이스가 필수이다. JDK 동적 프록시에 적용할 로직은 위 캡쳐 사진의... InvoationHander 인터페이스를 구현하여 개발하면 된다. 즉, 프록시의 proxy/decorate 로직과 실..
- 2022-11-14 20:07:57
- Spring에서 프록시 사용 1starryeye이전 포스팅에서 프록시 개념을 사용한.. 프록시 패턴과 데코레이터 패턴에 대해 알아보았다.. 프록시 개념 : https://starryeye.tistory.com/106 프록시 패턴 : https://starryeye.tistory.com/107 데코레이터 패턴 : https://starryeye.tistory.com/108 이제 실제로 스프링 프레임워크에서 스프링 컨테이너에 프록시를 도입할 경우의... 3가지 상황별로 알아 보자.. 1. 등록될 스프링 빈의 인터페이스가 있고.. 그 구현체가 수동 등록되어 있을 경우 2. 등록될 스프링 빈의 인터페이스가 없고.. 그냥 그 객체 자체가 수동 등록 되어 있을 경우 3. 컴포넌트 스캔을 사용하여 어노테이션 기반으로 스프링 빈이 자동 등록 될 경우 두 가지(1,..
- 2022-11-05 23:03:35
- Spring에서 자주 쓰이는 디자인 패턴 5starryeye프록시 개념을 사용한 프록시 패턴에 이어서.. 똑같이 프록시 개념을 사용하는 데코레이터 패턴에 대해 알아 보자... 데코레이터 패턴은 프록시 개념 중, 부가 기능을 추가한다는 의도를 담고있는 패턴이다. 역시 예제를 통해 알아보자.. 똑같이 프록시 개념을 사용하므로.. 프록시 패턴과 구조는 동일하다.. (프록시 체인 개념도 함께 알아보자.) 위는 각각 클래스 의존관계와 런타임 객체 의존 관계이다. 프록시는 TimeDecorator, MessageDecorator 두개이며.. 실제 Target 객체는 RealComponent 클래스이다. Componet는... 부가기능을 수행할 MessageDecorator 클래스, TimeDecorator 클래스와 실제 객체인 RealComponent의 인터페이스이다. 실..
- 2022-11-05 21:30:17
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)