전체 글

전체 글

    [Mysql] 데이터 삭제하기 & AUTO INCREMENT 초기화 - DELETE, TRUNCATE, DROP

    mysql 에서 데이터를 삭제하는 방법은 세가지 정도가 있다. DELETE : WHERE 절에 조건을 걸고 데이터 삭제, 테이블 유지TRUNCATE : WHERE절을 사용하지 않고 모든 데이터 삭제DROP : 데이터 삭제 & 테이블 삭제  DELETEDELETE 에서 WHERE 절이 없이 사용하면 모든 데이터가 삭제 되기 때문에 주의한다. name 이 test 인 데이터 행 삭제-- DELETE FROM 테이블명 WHERE 조건;DELETE FROM member WHERE name = 'test';  DROPmember 테이블 자체가 삭제된다.-- DROP TABLE 테이블명DROP TABLE member;   TRUNCATE테이블은 그대로고 데이터만 삭제된다. Auto increment 도 초기화된다...

    [Spring] 스프링 AOP 포인트컷

    [Spring] 스프링 AOP 포인트컷

    포인트컷 지시자 AspectJ 는 포인트컷을 편리하게 표현하기 위해 특별한 표현식을 사용한다. 포인트컷 표현식은 AspectJ가 제공하는 포인트컷 표현식을 줄여서 말하는 것으로execution 같은 포인트컷 지시자(Pointcut Designator, PCD)로 시작한다.  지시자 종류 execution : 메소드 실행 조인 포인트를 매칭한다. 스프링 AOP 에서 가장 많이 사용하고 기능도 복잡하다. within : 특정 타입 내의 조인 포인트를 매칭한다.args : 인자가 주어진 타입의 인스턴스인 조인 포인트this : 스프링 AOP 프록시를 대상으로 하는 포인트target : 스프링 AOP 프록시가 가리키는 실제 대상으로 하는 조인 포인트@target : 실행 객체의 클래스에 주어진 타입의 어노테이션..

    [Spring] Spring AOP 구현 예제

    [Spring] Spring AOP 구현 예제

    라이브러리 추가build.gradle 에 의존성 추가를 해준다. implementation 'org.springframework.boot:spring-boot-starter-aop'위의 라이브러리 추가로 aspectJ 관련 라이브러리를 등록하고 스프링 부트가 AOP 관련 클래스를 자동으로 스프링 빈에 등록해준다.  @Aspect 사용 예제스프링은 @Aspect 어노테이션으로 편리하게 포인트컷과 어드바이스로 구성되어 있는 어드바이저 생성 기능을 지원하며 어드바이저로 사용할 클래스에 @Aspect 어노테이션을 붙여줌으로써 스프링 AOP 를 적용할 수 있다. 주의할 점으로 스플이 AOP 적용시에는 private, final 메소드는 AOP 적용이 불가능하다. @Slf4j@Aspectpublic class As..

    [Spring] AOP 개념 및 용어 정리

    [Spring] AOP 개념 및 용어 정리

    AOP란Aspect-Oriented Programming , 관점 지향 프로그래밍이란 뜻으로 어떤 로직을 핵심적인 관점과 부가적인 관점으로 나누어서 보고 그 관점을 기준으로 각각 모듈화하는 것이다. 부가 기능과 부가 기능을 어디에 적용할 지 선택하는 기능을 합해서 하나의 모듈로 만든 것을 Aspect라고 한다. 이 Aspect 를 사용한 프로그래밍 방식을 AOP 라고 한다. AOP는 OOP를 대체하기 위한 것이 아닌 횡단 관심사(하나의 부가 기능이 여러 곳에 동일하게 사용됨)를 깔끔하게 처리하기 어려운 OOP의 부족한 부분을 보조하는 목적으로 개발되었다. AOP 의 대표적인 구현으로는 AspectJ 프레임워크가 있다.  AOP 적용 방식적용 방식에는 크게  3가지 방식이 있다. 컴파일 시점클래스 로딩 시..

    [Spring] @Aspect란, 생성 과정 설명

    [Spring] @Aspect란, 생성 과정 설명

    @Aspect란 AOP(관점 지향 프로그래밍)를 가능하게 하는 AspectJ 프로젝트에서 제공하는 어노테이션이다.  @Aspect를 스프링 프록시에 적용하려면 어드바이저(Advisor)를 만들어서 스프링 빈으로 등록하면 된다. 그러면 자동 프록시 생성기는 스프링 빈으로 등록된 어드바이저들을 찾고 스프링 빈에 자동으로 프록시를 적용해준다.  @Aspect 프록시 예제  빨간 박스는 포인트컷 부분이고 초록색 박스는 어드바이스 부분이다.  @Aspect를 어드바이저로 변환해서 저장하는 과정 1. 실행 : 스프링 어플리케이션 로딩 시점에 자동 프록시 생성기를 호출한다. 2. 모든 @Aspect 빈 조회 : 자동 프록시 생성기는 @Aspect 어노테이션이 붙은 스프링 빈을 모두 조회한다. 3. 어드바이저 생성 :..

    [Spring] 빈 후처리기

    [Spring] 빈 후처리기

    이전에 작성했던 프록시 팩토리의 문제점을 해결하기 위해서 빈 후처리기를 사용한다고 했다. 프록시 팩토리 내용에 대해 알고싶으면 아래 링크를 참고하면 된다. https://bsssss.tistory.com/1482  빈 후처리기란 일반적으로 @Bean 이나 @Component 를 사용하면 스프링은 대상 객체를 생성하고스프링 컨테이너 내부의 빈 저장소에 등록한다. 빈 후처리기는 객체를 조작할 수도 있고, 다른 객체로 바꿔치기 하는 것도 가능하다.  빈 후처리기 - 스프링 빈 등록 과정생성 : 스프링 빈 대상이 되는 객체를 생성(@Bean, 컴포넌트 스캔 포함)전달 : 생성된 객체를 빈 저장소에 등록하기 직전에 빈 후처리기에 전달후 처리 작업 : 빈 후처리기는 전달된 스프링 빈 객체를 조작하거나 다른 객체로 ..

    [Spring] 프록시 팩토리

    [Spring] 프록시 팩토리

    프록시 팩토리란 프록시 패턴은 인터페이스가 있으면 JDK 동적 프록시를 사용하고 구체 클래스만 있다면 CGLIB를 사용하며 이 설정을 변경할 수도 있다.  스프링에서 이 두개를 사용할 때 InvocationHandelr, MethodInterceptor 를 따로 만들지 않고 Advice를 호출해서 두개다 호출해서 사용한다. 스프링에서 Pointcut 이라는 개념으로  프록시 팩토리를 사용해서 Advice만 호출하면 나머지는 스프링에서 호출해서 사용할 수 있게해 이 문제를 일관성 있게 해결한다.   프록시 팩토리 관련 자주 사용하는 용어 정리포인트컷(pointcut)어디에 부가 기능을 적용할지 판단하는 필터링 로직 주로 클래스와 메서드 이름으로 필터링함어떤 point에 기능을 적용할지 안할지 잘라서(cut..

    [Java] 동적 프록시 (JDK 동적 프록시, CGLIB)

    [Java] 동적 프록시 (JDK 동적 프록시, CGLIB)

    JDK 동적 프록시 인터페이스 기반으로 프록시를 동적으로 만들어 사용하기 때문에 인터페이스가 필수이다. 자바에서는 리플렉션을 사용해 proxy 클래스를 제공해주고 있다.  리플렉션(Refliction)이란 구체적인 클래스 타입을 알지 못해도 그 클래스의 메서드, 타입, 변수들에 접근할 수 있도록 해주는 자바 API 이다. 사용 시기는 동적으로 클래스를 사용해야할 때 사용하는데 작성 시점에는 어떤 클래스를 사용할지 모르지만 런타임 시점에 가져와 실행해야하는 경우에 필요하다. 단점은 메서드에 값이 잘못 입력 되어도 컴파일 오류가 발생하지 않고 해당 코드를 직접 실행하는 시점에 런타임 오류가 발생해서 그때 오류를 알 수 있다. 이러한 이유로 리플렉션을 잘 사용하지 않고, 만약 사용하게 된다면 공통 처리가 필요..

    CKA 자격증 취득을 위한 학습 방법 및 시험 팁 및 후기

    CKA 자격증 취득을 위한 학습 방법 및 시험 팁 및 후기

    자격증 취득 이유cka를 통해 얻고자 하는 것은 쿠버네티스에 대해 아는 것과, 관리자로써 어느정도 필요한 능력과 검증할 자료를 가지고자 하기 위해서 이다. 인프라 DevOps 에 관심이 있기도 해서 공부할 겸 자격증을 취득하고자 했다.   학습방법1cka 강의를 검색하면 가장 많이 추천하는 Udemy 강의 를 신청했다. 강좌 후반부에 있는 Mock Exam은 최소 2번 이상 하는 것을 추천한다. udemy 에서 연습할 수 있는 실습환경인 kubekloud 도 제공해준다.     2따배쿠 강의 유튜브 구독 or 패스트캠퍼스 강의 유데미에서 이해안가는 내용을 따배쿠에서 들으면 도움이 된다. 즐겨찾기에 대해서도 공유해준다. 근데 이제는 시험에서 즐겨찾기 기능을 사용할 수가 없다. 즐겨찾기 기능 없이 문서 내에..

    [Java] 프록시 패턴, 데코레이터 패턴

    [Java] 프록시 패턴, 데코레이터 패턴

    프록시란 프록시의 뜻은 대리자, 대변인으로 누군가 일일 대신 시키는 것을 의미하는데 프로그램에서 사용 되는 뜻도 클라이언트가 객체를 직접 사용하는 것이 아니라 중간에 프록시를 거쳐 사용하는 것이다. 프록시 패턴이란 객체를 대리자가 대신 처리함으로 써 로직의 흐름을 제어하는 패턴이다. 어떤 객체를 사용하고자 할때, 객체를 직접적으로 참조하는 것이 아닌 해당 객체를 대항하는 객체를 통해 대상 객체에 접근하는 방식을 사용하면 해당 객체가 메모리에 존재하지 않아도 기본적인 정보를 참조하거나 설정할 수 있고, 실제 객체의 기능이 필요한 시점까지 객체의 생성을 미룰 수 있다. 서버와 프록시의 같은 인터페이스 사용 클라이언트는 서버 인터페이스에만 의존한다. 서버와 프록시가 같은 인터페이스를 사용해서 DI를 사용해서 ..