[Design Pattern] 템플릿 메서드 패턴 0. 들어가기 전에 이 글은 예제 코드를 이용하여 템플릿 메서드 패턴을 적용시켜보고, 어떠한 장단점이 있는지 설명하는 글입니다. 1. 템플릿 메서드 패턴 적용 전 현재 주문 로직과 결제 로직이 있다.(간단하게 로그로 표현했다.) @Slf4j public class DefaultOrderLogic { private void order() { log.info("주문 로직 실행"); } } @Slf4j public class DefaultPayLogic { private void pay() { log.info("결제 로직 실행"); } } 그런데 여기에 요구사항으로 메서드의 시작과 끝에 로그를 출력하는 기능을 추가한다고 하자. 그렇다면 위의 코드는 아래처럼 바..
전체 글
우아한테크코스 5기 BE 에단 Github : https://github.com/cookienc[JPA] 엔티티의 생명주기와 Spring Data JPA- (1) 0. 들어가기 전에 [10분 테코톡] 잉, 페퍼의Spring Data JPA 삽질일지 을 보다가 흥미로운 점이 생겨서 JPA의 영속성 관리 및 기본 메서드에 대해서 알아보려고 한다. 1. 영속성 컨텍스트(PersistenceContext) 엔티티를 영구 저장하는 환경으로 논리적 개념 엔티티 매니저(EntityManger)를 통해 영속성 컨텍스트에 접근 장점 1차 캐시 한 트랜잭션 내에서 공유 JPA가 객체를 찾을 때 1차 캐시를 먼저 찾은 후에 없으면 DB에서 확인 DB에서 조회를 하고 1차 캐시에 저장 후 반환 동일성 보장 트랜잭션을 지원하는 쓰기 지연 변경 감지(Dirty Checking) commit이 발생하면 1차 캐시와 스냅샷을..
[Spring] Spring ArgumentResolver란? 1. ArgumentResolver란? Controller로 들어온 파라미터를 가공하거나 수정 기능을 제공하는 객체 주로 컨트롤러 단에서 중복 코드를 제거하려는 목적으로 사용 HandlerMethodArgumentResolver를 구현한 ArgumentResolver를 WebMvcConfig를 구현한 설정 파일에 등록하여 사용 2. 동작 과정 인터셉터 이후에 동작을 함. 인터셉터는 컨트롤러를 부를수 있는지 유무를 검사하는 반면에 ArgumentResolver는 컨트롤러가 원하는 객체를 생성해서 반환해준다.동작 과정 3. 인터페이스 public interface HandlerMethodArgumentResolver { boolean suppor..
[Spring] 스프링 필터(Filter) vs 인터셉터(Interceptor) NextStep 강의를 들으면서 필터와 인터셉터를 접할 일이 생겼다. 필터와 인터셉터는 기본적으로 비슷한 역할을 한다는 점을 알고있었다. 하지만 주어진 코드를 접해봤는데, 역할별로 필터와 인터셉터를 구별하여 사용한 것이 보였다. 어떤 기준을 가지고 구별을 했는지 알아보기 위해, 둘의 특성과 차이점을 정리하고자 한다. 1. 필터(Filter)란? J2EE 표준 스펙 기능 스프링 컨테이너가 아닌 톰캣과 같은 웹 컨테이너로 관리 서블릿에 요청이 전달되기 전/후에 url 패턴에 맞는 모든 요청에 대해 부가작업을 처리할 수 있게 하는 기능(ex) 로그인 유무 확인) request, response 객체를 다른 객체로 바꿀 수 있다. ..
[AWS] 서브 도메인 적용하기 0. 들어가기 전에 이 글의 환경은 AWS EC2에 ubuntu18.04버전과 nginx를 사용하여 진행되었습니다. 도메인은 가비아 사이트에서 구매를 하였습니다. 이번 글은 서브 도메인을 등록하는 방법을 기록한 글입니다. 1. 과정 1. Route53에 접속해서 서브 도메인을 등록해준다. 레코드 유형을 CNAME으로 등록하면 서브 도메인으로 사용할 수 있다. 값에는 Route53의 호스팅 영역에 등록했던 도메인 이름을 입력한다. 여기에서는 Dev와 Prod 두 개를 등록할 예정이다. 2. 가비아에 들어가서 서브도메인을 등록해준다. Route53과 마찬가지로 타입과 호스트를 작성해 준다. 값/위치에서는 WWW, @를 등록했던것과는 달리 dev.도메인., prod.도메인.을 ..
[AWS] IP주소를 Domain로 Redirect 0. 들어가기 전에 이 글의 환경은 AWS EC2에 ubuntu18.04버전과 nginx를 사용하여 진행되었습니다. 도메인은 가비아 사이트에서 구매를 하였습니다. 도메인을 등록하지 않았으면 [AWS EC2를 도메인에 연결하기]을 참조하시면 됩니다. 이번 글은 URI로 IP가 주소가 입력되면 DNS로 바꿔주는(정확히는 Redirect) 과정에 대해 설명되어있습니다. 1. 과정 1. 설정파일을 확인한다. $ sudo vim /etc/nginx/nginx.conf 이 파일에서 include /etc/nginx/conf.d/*.conf; 가 있는지 확인한다. 추가 설정파일(.conf)을 conf.d에서 관리하기 위함이다. 없으면 입력해주고, 폴더까지 만들어주자..
[AWS] AWS의 도메인에 HTTPS 적용 1. 과정 기본적이 방화벽 설정을 해준다. Certbot을 설치한다. $ sudo add-apt-repository ppa:certbot/certbot $ sudo apt install python-certbot-nginx Nginx 서버 블록을 설정한다. $ sudo vim /etc/nginx/sites-available/your_domain 서버 블록이 설정이 되어있으면 위 명령어를 실행해서 server_name your_domain www.your_domain; 으로 설정되었는지 확인한다. 만약 안되어 있으면 위 내용처럼 고친 후 $ sudo nginx -t 로 테스트를 해주고 sudo systemctl reload nginx 으로 다시 시작해주면 된다...
[AWS] AWS EC2의 MySQL에 외부 접속하기 1. 과정 1. mysqld.cnf 파일의 bind-address를 0.0.0.0으로 교체해준다. 주석처리 해도 된다. $ cd /etc/mysql/mysql.conf.d $ sudo vim mysqld.cnf 2. AWS 인스턴스의 보안 설정에 들어가서 MySQL/Aurora의 접속가능한 아이피에 자기자신을 추가시킨다. 보안 설정의 자세한 내용은 EC2에서 ubuntu 설치하기 글을 보시면 됩니다. 3. DataGrip을 켜고 추가시켜 준다. data grip에서 new터튼을 누른후 입력해준다. NAME : 자유 Host : EIP User/Password : AWS의 데이터베이스 사용자 계정 아이디와 비밀번호 root로 해도 되지만 보안을 위해서 ..