AOP(Aspect Oriented Programing)

관점이 다른 로직(부가기능, 로그처리, 트랜잭션 처리 보안처리 등)을 주업무 로직에 뺏다 꽂았다 하기 쉽게 만드는 방법론 중 하나

꽂아 넣을 부가 기능 코드를 Cross-cutting concern이라 하고

주업무 로직을  Core concern이라 한다.

Spring AOP는 Cross-cutting concern을 프록시 객체에 따로 구현해서 실행되게 하는 방법이다.

 

 

'WIL' 카테고리의 다른 글

WEEK2 개인과제 구상  (0) 2023.05.28
WEEK1  (0) 2023.05.21

우리 동네 맛집 '똣똣카페'의 키오스크를 구현해볼 예정이다.

똣똣카페의 메뉴는 크게 반미, 로띠, 음료로 나뉘는데 반미는 고수 추가 옵션이 있고, 음료는 핫/아이스 옵션이 있으며 로띠는 따로 추가 옵션이 없다. 그러므로 추가 옵션이 없는 가장 기본적인 로띠 메뉴로 일단 코드를 짜봤다.

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import java.util.SortedMap;

class Menu {

    String name;
    int price;

    Menu(String name, int price) {
        this.name = name;
        this.price = price;
    }

}


public class Main{
    public static void main(String[] args) {
        List<Menu> roti = new ArrayList<>();
        roti.add(new Menu("누텔라 바나나 로띠", 7800));
        roti.add(new Menu("계란 바나나 로띠", 7800));
        roti.add(new Menu("카야 로띠", 7800));

        System.out.println("메뉴를 선택해 주세요.");

        for(int i = 0; i < roti.size(); i++){
            int num = i + 1;
            System.out.println(num + ". " + roti.get(i).name + "   | " + roti.get(i).price + "원");
        }

        Scanner sc = new Scanner(System.in);
        int select = sc.nextInt();
        int orderNum = select - 1;

        System.out.println(roti.get(orderNum).name + " 1개 총 " + roti.get(orderNum).price + "원 주문하시겠습니까?");


    }

}

메뉴 클래스를 상속받는 클래스로 상품 클래스를 따로 구현해봐야겠다.

'WIL' 카테고리의 다른 글

AOP란?  (0) 2023.07.16
WEEK1  (0) 2023.05.21

팀소개 페이지 만들기 프로젝트를 하면서 HTTP 주요 메서드에 대해 공부했다. 나는 프로젝트에서 상세 보기 페이지와 프로필 수정 기능을 맡았는데 POST 메서드로도 리소스를 수정할 수 있는데 왜 PUT 메서드가 따로 있는지 의문이 들었다. 그래서 프로필 수정 기능을 먼저 익숙한 POST 메서드로 구현해 보고 PUT 메서드를 이용해서 다시 짜봤다. 그런데 막상 실행시켜보니 겉보기엔 두 메서드에 별 다른 점이 없어 보여 어떤 차이점이 있는지 알아봤다.

 

POST 메서드와 PUT 메서드의 차이점은 멱등성에 있다는데 동일한 요청을 한번 보내는 것과 여러번 연속으로 보내는 것이 같은 효과를 가지고, 서버의 상태도 동일하게 남을 때 해당 HTTP 메서드가 멱등성을 가진다고 한다. 

 

POST

POST는 서버로 데이터를 전송하여 새로운 자원을 생성하는 역할을 한다. 따라서 요청을 여러 번 보내는 경우 매번 새로운 자원이 생겨나는 것이며, 이는 서버의 상태가 변경되는 것을 의미한다. 그러므로 POST 메서드는 멱등성을 가지지 않는다.

 

PUT 

PUT 메서드는 대상 리소스를 덮어씌워 변경하거나, 대상 리소스가 없다면 새로 추가한다. 만일 대상 리소스가 없다면 PUT이 POST와 같은 동작을 하게 되는데, POST는 매번 새로운 자원을 만드는 반면, PUT은 해당 자원이 이미 있다면 데이터만 덮어쓴다. 따라서 요청을 한번하든 여러 번 하든 결국 서버의 상태는 같아지니, PUT은 멱등하다.

 

 

사실 멱등성이란 말이 낯설어서 그런지 아직 무슨 뜻인지 잘 와닿진 않지만 앞으로 계속 쓰다 보면 언젠간 '아 이게 이런 뜻이구나' 알게 될 날이 올 것 같다.

 

 

'WIL' 카테고리의 다른 글

AOP란?  (0) 2023.07.16
WEEK2 개인과제 구상  (0) 2023.05.28

+ Recent posts