Home

0

Spring AOP - @Aspect

목차 Spring AOP - Advice 종류 Spring AOP - 트랜잭션 순서 Spring AOP - Pointcut 참조 Spring AOP - 어드바이스 추가 Spring AOP - Pointcut 분리 Spring AOP - @Aspect Spring AOP - Aspect Spring AOP - 용어 정리 Spring AOP - 적용 방식 @Aspect 작동방식 실행 스프링 어플리케이션 로딩 시점에 자동 프록시 생성기 를 호출한다. 모든 @Aspect Bean 조회 스프링 컨테이너에서 @Aspect Advisor 생성 @Aspect 어드바이저 빌더 를 통해 어드바이저를 생성한다. Aspect 기반 어드바이저 저장 생성한 어드바이저를 @Aspect 어드바이저 빌더 내부에 저장한다. 자동 프록시 생성기 역할@Aspect 가 적용된 Bean 들을 조회합니다. 해당 Bean 내 정의된 Advice 와 Pointcut 표현식을 이용해 Advisor 를 생성 후 저장합니다. Bean 객체 생성시 Bean 후처리기에서 Advisor 객체를 조회해 Pointcut 표현식에 해당되는 Bean 이 있을 경우 자동 프록시 생성기에서 Advice(부가기능) 가 적용된 프록시 객체를 생성합니다. @Aspect 사용하기

0

Redux 사용하기 - 계산기 만들기

목차 Redux Saga Redux Middleware 만들기 Redux 사용하기 - 계산기 만들기 Redux 사용하기 라이브러리 설치 yarn add react-redux Action Type 정의/* 액션 타입 만들기 */// Ducks 패턴을 따를땐 액션의 이름에 접두사를 넣어주세요.// 이렇게 하면 다른 모듈과 액션 이름이 중복되는 것을 방지 할 수 있습니다.const SET_DIFF = "counter/SET_DIFF";const INCREASE = "counter/INCREASE";const DECREASE = "counter/DECREASE"; Action 생성 함수/* 액션 생성함수 만들기 */// 액션 생성함수를 만들고 export 키워드를 사용해서 내보내주세요.export const setDiff = (diff) => ({ type: SET_DIFF, diff });export const increase = () => ({ type: INCREASE });export const decrease = () => ({ type: DECREASE }); Reducer

0

Redux 사용하기 - 계산기 만들기

목차 Redux Saga Redux Middleware 만들기 Redux 사용하기 - 계산기 만들기 Redux 사용하기 라이브러리 설치Action 정의하기export const INCREASE = "counter/INCREASE" as const;export const DECREASE = "counter/DECREASE" as const;interface increaseAction { type: typeof INCREASE;}interface decreaseAction { type: typeof DECREASE;}export type CounterType = increaseAction | decreaseAction; Action 생성 함수export const increase = (): increaseAction => ({ type: INCREASE,});export const decrease = (): decreaseAction => ({ type: DECREASE,}); Stateinterface CounterState { value: number;}const initialState: CounterState = { value: 0,};

0

Redux 사용하기

목차 Redux Saga Redux Middleware 만들기 Redux 사용하기 - 계산기 만들기 Redux 사용하기 Redux 사용하기 하나의 애플리케이션 안에는 하나의 Store 가 존재 State 는 읽기 전용 불변성 을 지켜줘야 한다. 객체의 경우 Spread 연산자 를 사용해 기존 객체를 덮어써준다. 배열의 불변성을 지켜주는 내장함수를 사용해야 한다. 불변성을 지켜야만 Component 들이 제대로 Rerendering 된다. 변화를 일으키는 함수, Reducer 는 순수한 함수 여야 한다. Reducer 는 이전 상태 와 Action 객체 를 파라미터로 받는다. 이전 상태를 변경하지 않고 새로운 상태를 만들어 반환한다.(불변성 유지) 똑같은 파라미터로 호출된 리듀서는 언제나 똑같은 결과값을 반환해야 한다. Redux 모듈 설치yarn add react-redux Action 상태의 변화가 필요할 경우 Action 을 일으킨다.

0

JPA Entity - 기본키 매핑

목차 JPA Entity - 테이블 매핑 JPA Entity - Column 매핑 JPA Entity - 기본키 매핑 기본키 매핑 방법 직접 매핑 : @Id 자동 생성 : @GeneratedValue strategy (전략) IDENTITY : 데이터 베이스에 위임 SEQUENCE : 데이터 베이스 스퀀스 오브젝트 사용 TABLE : 키 생성용 테이블 사용, 모든 DB 에서 사용 AUTO : 방언에 따라 자동 지정 IDENTITY 전략 기본키 생성을 데이터 베이스에 위임하는 전략 MySQL, PostgreSQL, SQL Server, DB2 에서 사용한다. IDENTITY 전략 - 문제점 DataBase 에 값이 들어가야 Id 값을 알 수 있다. 영속성 Context 에서 Entity 가 관리 되기 위해서는 PK 값이 반드시 있어야 한다. JPA 는 트랜잭션 COMMIT 시점에 INSERT SQL 실행하지만 IDENTITY 전략은 persist 시점에 실행 후 DB 에서 Id 조회

0

JPA Entity - Column 매핑

목차 JPA Entity - 테이블 매핑 JPA Entity - Column 매핑 JPA Entity - 기본키 매핑 @Column| 이름 | 기능 | 기본 값 ||: ——————————— | :————————————————————————————————————————————————— |: ——- || name | 필드와 매핑할 테이블 컬럼 이름 | 객체의 필드 이름| insertable | 등록 가능 여부 (true : 등록 가능, false : 등록 불가) | True|updatable | 변경 가능 여부 (true : 변경 가능, false : 변경 불가)| nullable (DDL) | null 값 허용 여부를 설정한다. false 일 경우 not null 제약 조건 이 생성된다. || unique (DDL) | 한 컬럼에 대한 Unique 제약 조건 을 설정한다. || columnDefinition (DDL) | 데이터 베이스 컬럼 정보를 직접 줄 수 있다. | 필드의 자바 타입| length (DDL) | 문자열 길이 제약 조건을 생성한다. (String 에서만 사용 가능) | 255| precision (DDL) scale (DDL) | BigDecimal 타입에서 사용한다. precision 은 소수점을 포함한 자릿수를 scale 은 소수의 자릿수다. double 과 float 타입에는 적용되지 않는다. | @Enumerated 자바 Enum Type 을 매핑할 때 사용 value EnumType.ORIGINAL : enum 순서를 데이터 베이스에 저장 (Integer) EnumType.STRING : enum 이름을 데이터 베이스에 저장 (String) EnumType.STRING : enum 이름을 데이터 베이스에 저장 (String) | EnumType.ORIGINAL | --> @Temporal value TemporalType.DATE : 날짜 정보, 데이터 베이스 date 타입과 Mapping TemporalType.TIME : 시간 정보, 데이터 베이스 time 타입과 Mapping TemporalType.TIMESTAMP : 날짜와 시간, 데이터 베이스 timestamp 와 Mapping

0

JPA Entity - 테이블 매핑

목차 JPA Entity - 테이블 매핑 JPA Entity - Column 매핑 JPA Entity - 기본키 매핑 Entity 매핑에 사용하는 어노테이션 객체와 테이블 매핑 : @Entity , @Table 필드와 컬럼 매핑 : @Column 기본 키 매핑 : @Id 연관 관계 매핑 : @ManyToOne, @JoinColumn @Entity JPA 가 관리하는 클래스JPA 를 사용하기 위해서는 반드시 Entity 어노테이션을 붙여줘야 한다. 파라미터가 없는 기본 생성자를 반드시 생성해줘야 한다. final 클래스, enum, interface, inner 클래스 에는 사용이 불가능 하다. 저장할 field 에 final 키워드는 사용이 불가능하다. @Table Table 어노테이션은 Entity 와 매핑할 Database Table 을 지정한다.

0

Spring AOP - 용어 정리

목차 Spring AOP - Advice 종류 Spring AOP - Advice 종류 Spring AOP - 트랜잭션 순서 Spring AOP - Pointcut 참조 Spring AOP - 어드바이스 추가 Spring AOP - Pointcut 분리 Spring AOP - @Aspect Spring AOP - 용어 정리 Spring AOP - 적용 방식 Spring AOP - Aspect 참고본 포스트는 김영한의 스프링 핵심 원리 - 고급편 내용을 참고해 만들었습니다. 조인 포인트 (JoinPoint) 어드바이스가 적용될 수 있는 위치 메소드 실행, 생성자 호출, 필드 값 접근, static 메서드 접근 같은 프로그램 실행 중 지점 AOP 를 적용할 수 있는 모든 지점(추상적인 개념) Spring AOP 는 프록시 방식을 사용하므로 조인 포인트는 항상 메소드 실행 시점으로 제한된다. 포인트 컷 (Pointcut) 어드바이스가 적용될 위치를 선별하는 기능

0

Spring AOP - 적용 방식

목차 Spring AOP - Advice 종류 Spring AOP - 트랜잭션 순서 Spring AOP - Pointcut 참조 Spring AOP - 어드바이스 추가 Spring AOP - Pointcut 분리 Spring AOP - @Aspect Spring AOP - 용어 정리 Spring AOP - 적용 방식 Spring AOP - Aspect 참고본 포스트는 김영한의 스프링 핵심 원리 - 고급편 내용을 참고해 만들었습니다. 횡단 관심 사항횡단 관심 사항(Cross-cutting Concern)은 애플리케이션 전반에서 공통적으로 사용되는 기능입니다. 즉, 여러 모듈에서 공통으로 사용되는 기능으로서, 여러 코드에 걸쳐 분산되어 있을 수 있습니다. 이러한 횡단 관심 사항은 핵심 비즈니스 로직과 분리되어 있기 때문에 애플리케이션의 유지 보수성과 확장성에 영향을 미칩니다. 횡단 관심 사항의 예로는 로깅, 보안, 트랜잭션 처리 등이 있습니다. 예를 들어, 여러 모듈에서 공통적으로 로그를 출력해야 한다면, 모든 코드에 로그를 출력하는 코드를 추가해야 합니다. 하지만 이러한 방식은 유지 보수성이 떨어지고 코드 중복이 발생합니다. 이를 해결하기 위해 로그 출력과 같은 공통 기능을 모듈화하고 재사용 가능한 코드로 만들어주는 것이 바로 AOP의 역할입니다. AOP를 사용하면 핵심 로직 코드를 수정하지 않고도 횡단 관심 사항을 처리할 수 있습니다. 즉, 공통 기능을 모듈화하여 애플리케이션 전반에서 쉽게 사용할 수 있게 됩니다. 이를 통해 애플리케이션의 유지 보수성과 확장성이 향상되며, 코드의 가독성도 높아지는 등의 장점을 가집니다. Spring AOP AOP 를 사용하면 핵심기능 과 부가기능 이 코드상 완전히 분리 된다.