2025년 9월 24일 수요일 (85일차)

Jeonghoon·2025년 9월 24일

jeonghoon's Study

목록 보기
88/128

⚛️ React & 🌿 Spring AOP 정리


⚛️ React

🌍 전역 상태 관리 (Redux 활용)

단계설명예시 코드
1. 전역변수 초기값 설정전역 상태를 객체 형태로 정의const initialState = { }
2. Slice 정의createSlice를 이용해 전역 상태 로직 정의const XXXSlice = createSlice({ ... })
3. Export 설정reducer와 actions를 내보내기export const { actions } = XXXSlice;
export default XXXSlice.reducer;
4. 상태 변경(dispatch)전역 상태를 변경할 때 사용const dispatch = useDispatch();
5. 상태 조회(useSelector)전역 상태를 가져올 때 사용const { state명 } = useSelector((state) => state.슬라이스명)

💾 스토리지 사용하기 (Redux Persist)

Redux 상태를 저장소(LocalStorage 등)에 영구적으로 저장할 수 있습니다.

단계설명예시 코드
1. 설정 파일 생성persist 설정 객체 정의const persistConfig = { key: 'XXX', storage };
2. 스토리지 importredux-persist에서 storage 불러오기import storage from 'redux-persist/lib/storage';
3. Reducer에 적용persistReducer로 적용const persistedReducer = persistReducer(persistConfig, 슬라이스);

🌿 Spring AOP

🧭 개념

  • AOP(Aspect Oriented Programming): 부가 기능을 하나의 모듈로 묶어, 핵심 비즈니스 로직과 분리하는 프로그래밍 방법.
  • 주 사용 예시: 로그 기록, 트랜잭션 처리, 보안 (인증/권한), 유효성 검사 등

💡 예시: joinPoint.getArgs()로 핵심 로직의 매개변수를 가져와 조건 검증 가능


⚙️ AOP 어노테이션 및 적용 규칙

어노테이션실행 시점설명
@Before메소드 실행 사전 검증(권한, 유효성 등) 수행
@After메소드 실행 로그 기록, 리소스 해제 등 수행
@AfterReturning메소드 성공 후 반환값 획득반환값 가공 및 확인 가능
@Around메소드 실행 전/후 제어성능 측정, 트랜잭션 처리 등에서 사용

📜 execution 문법 구성

구성 요소의미예시
반환타입적용할 메소드의 반환 타입execution(* com.example.Service.*(..))
경로java 이하 클래스 경로execution(* example.service.*(..))
메소드명적용할 메소드 지정execution(* AopService.enter(..))
매개변수 지정특정 인자를 갖는 메소드 대상execution(* AopService.enter(..)) && args(매개변수명,..)

@AfterReturning(value="execution(* ... )", returning="매개변수명") → 반환값을 변수로 받아올 수 있음


🔄 @Around 상세 사용법

@Around는 실제 메소드 실행 시점을 직접 제어할 수 있습니다.

메서드설명
.getSignature()실행 중인 비즈니스 로직 정보 (메소드명, 위치 등) 확인
.getArgs()실행 대상의 매개변수 배열 반환
.proceed()실제 핵심 로직 실행 및 결과 반환
Object result핵심 로직 실행 결과를 저장하는 객체

예시 코드

@Around("execution(* com.example.service.*(..))")
public Object logAround(ProceedingJoinPoint joinPoint) throws Throwable {
    // 실행 전
    System.out.println("[AOP Before] 메소드 호출: " + joinPoint.getSignature());

    // 핵심 로직 실행
    Object result = joinPoint.proceed();

    // 실행 후
    System.out.println("[AOP After] 반환값: " + result);

    return result;
}

0개의 댓글