목록개발/Backend (13)
leelee.log
AOP를 쓸 때 대부분 Aspect용 class를 만들어서 거기다가 @Around, @Before 등을 이용해서 Controller나 Service의 로그를 찍는 걸 봤는데 아예 AOP용 어노테이션을 만들어서 진행하는 게 너무 좋아보여서 다음에도 써보려고한다. Aspect class 를 만들었을 땐 몰랐는데 아예 코드에 명시가 되어있으니 직관적이다. 어노테이션을 직접 만들 수 있다는게 놀랍다. @Target은 java의 어디 부분에 쓸꺼냐는 뜻인데 나는 상세하게 보기 위해 Controller의 메소드들에 찍어볼테니 ElementType.METHOD가 되고 Retention은 저 어노테이션이 언제까지 살아있냐는 뜻. Aspect class에 와서 AOP 상세 조정을 해준다. AOP에 관련된 클래스라는 걸 ..
스프링이 제공해주는 제일 큰 기능으로는 IoC, AOP, PSA가 있다. 이중 AOP는 Aspect Oriented Programming의 줄임말이라고 하는데 강의를 들어보니 Aspect가 핵심이다. Aspect는 관점이라는 뜻이 있는데 나는 국면이라고 해석을 했다. AOP의 주요 기능은 내가 원하는 행동을 매번 어느 특정 국면(또는 시점)에 들어왔을 때 할 수 있게 해준다. 예를 들어서 Client로부터 Controller가 Request를 받고, Response를 작성해서 return하는 시간을 측정한다고 하자. Controller가 하나면 한 번 만 코드를 작성하면 되니까 상관이 없겠지만 AController, BController, CController처럼 컨트롤러가 여러개면 매번 똑같은 코드를 ..
*얼마전부터 유튜브에 열려있는 백기선님의 '스프링 입문' 이라는 강좌를 듣기 시작했다. 몇몇 개념들은 정리를 해두면 좋을 것 같아서 블로그 포스팅을 하려고 한다. 다른 분들을 위해 강좌 링크를 밑에 남겨두겠다.* 스프링을 사용하면서 DI(dependency injection) 이라는 개념을 들어봤는데 Inversion of Control이라는 중요한 개념이 있었다. 내가 사용할 의존성을 내가 관리하지 않고 누군가 만들어서 주기 때문에 원래 내가 가지고 있어야 할 제어권이 넘어갔다고 하여 제어권 역전 이라고 한다. 스프링은 분명 개발 언어로 자바를 사용하고 있는데 이 inversion of control 때문에 우리가 객체를 사용하고자 할 때 일반 자바와 사용하는 방법에 약간의 차이가 있다. 1. 자바에서..