일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- 약수
- Python
- 스프링
- OS
- 모던 자바 인 액션
- 모던자바
- 스프링 시큐리티
- 리플렉션
- redis
- 파이썬
- 운영체제
- Reflection
- 자바
- Deadlock
- java
- 프록시
- test
- Spring
- BOJ
- MST
- 객체지향
- 다이나믹 프록시
- 알고리즘
- proxy
- 백준
- 최소 신장 트리
- 문자열
- Junit5
- CS
- spring security
- Today
- Total
목록java (19)
Dev 달팽이 @_''
Java - 어노테이션 프로세서 Lombok(롬복) @Getter, @Setter, @Builder 등의 어노테이션과 어노테이션 프로세서를 제공하여 표준적으로 작성해야할 코드를 개발자 대신 생성해주는 라이브러리 아래 의존성을 추가해야 함 org.projectlombok lombok 1.18.8 provided IntelliJ lombok 플러그인 설치 IntelliJ Annotation Processing 옵션 활성화 롬복 동작 원리 컴파일 시점에서 어노테이션 프로세서를 사용하여 소스코드의 AST(abstract syntax tree)를 조작 롬복의 논란 거리 공개된 API가 아닌 컴파일러 내부 클래스를 사용하여 기존 소스 코드를 조작 이클립스의 경우엔 java agent를 사용하여 컴파일러 클래스까지 ..
Java - 클래스의 프록시 서브 클래스를 만들 수 있는 라이브러리를 사용하여 프록시를 생성 가능 CGlib을 이용하는 방법과 ByteBuddy를 이용하는 방법이 있음 CGlib https://github.com/cglib/cglib/wiki 스프링, 하이버네이트가 사용하는 라이브러리 버전 호환성이 좋지 않아서 서로 다른 라이브러리 내부에 내장된 형태로 제공되기도 함 아래의 의존 추가 cglib cglib 3.3.0 BookServiceTest.java @Test public void diWithCglib(){ MethodInterceptor handler = new MethodInterceptor() { BookService bookService = new BookService(); @Override ..

Java - 다이나믹 프록시 다이나믹 프록시 런타임에 특정 인터페이스들을 구현하는 클래스 또는 인스턴스를 만드는 기술 Object Proxy.newProxyInstance(ClassLoader, Interfaces, InvocationHandler) Book.java public class Book { public String title; public Book() { } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } } BookService.java public interface BookService { void rent(Book book); void returnBook..

Java - 프록시 패턴 Sequence Diagram 프록시 패턴(Proxy Pattern) 프록시와 리얼 서브젝트가 공유하는 인터페이스가 있고, 클라이언트는 해당 인터페이스 타입으로 프록시를 사용 클라이언트는 프록시를 거쳐서 리얼 서브젝트를 사용하기 때문에 프록시는 리얼 서브젝트에 대한 접근을 관리하거나 부가기능을 제공하거나, 리턴값을 변경할 수도 있음 리얼 서브젝트는 자신이 해야 할 일만 하면서(SRP : Single Responsibility Principle,단일 책임 원칙) 프록시를 사용해서 부가적인 기능(접근 제한, 로깅, 트랜잭션 등)을 제공할 때 이런 패턴을 주로 사용 프록시 간단한 예제 Book.java public class Book { public String title; publi..