본문 바로가기
회고

TIL_210630

코동이 2021. 7. 1.

1. Facts(사실, 객관)

- 회사 aspect 로그 설정

- 회사 로그인 리팩토링

- 회사 어드민 미접속자 로그인 해제 버튼 및 기능 추가

- AOP 강의, SWAGGER 강의

- 품격 마이페이지 조회

2. Feelings(느낌, 주관)

- 어제 만든 30일 이상 미접속자 어드민 접속 차단에 대해 해제 기능 버튼을 만들었습니다. 생각보다 30일 이상 미접속이 많을 것이라고 생각을 했고 그 경우 차단 해제를 위해서 일일이 DB를 업데이트 쳐야 하는 상황이 발생합니다. 위험한 방법보다는 안전하게 처리하기 위해 계정관리에서 해당 차단을 해제하는 기능을 만들도록 했습니다. 어드민 페이지라 보안을 위해서 기능을 만들기 위해서는 메뉴에 기능추가를 따로 해야 했습니다. 새로운 @GetMapping의 주소가 생성되기 때문에 해당 기능을 새롭게 매핑시켜야 했습니다.

3. Findings (배운 점)

- AOP 강의를 기반으로 회사 어드민에 aspect 로깅 기록을 적용해보았습니다. servlet-context에 내가 정의한 aop 클래스를 직접 빈으로 정의하였으며, pom.xml에 mvn repository 정보를 추가했습니다.

@Slf4j
@Aspect
public class ControllerAspect {
	@Pointcut("execution(* xxx.xxxx..*Controller.*(..))")
	public void controllerPointCut() {}
 	
	@Before("controllerPointCut()")
	public void logBeforeController(JoinPoint.StaticPart jpsp) {
		log.info(" ClassName = {} , MethodName = {}",
		jpsp.getSignature().getDeclaringType().getName(), jpsp.getSignature().getName());
	}
}

@Aspect를 통해 해당 클래스가 aop에 관한 것이라고 알려줍니다.

@Pointcut으로 어느 부분에 aop를 사용할지 범위를 설정합니다.

@Before는 어떤 내용을 적용시키고, 어떤 @Pointcut을 이용할지 설정합니다

 

 

@Slf4j의 log.info를 통해서 각 컨트롤러 진입시 로그를 찍는 것인데, 딜레마는 해당 로그의 컨트롤러와 서비스를 출력하도록 하니 계속 aop를 적용한 AspectController가 로그에 찍혔습니다.

[2021-6-30 10:00] INFO  [xxx.xxxx.ControllerAspect(logBeforeController:18)] ClassName = xxx.xxxx.MainController , MethodName = home
[2021-6-30 10:07] INFO  [xxx.xxxx.ControllerAspect(logBeforeController:18)] ClassName = xxx.xxxx.MemberController , MethodName = memberList
[2021-6-30 10:11] INFO  [xxx.xxxx.ControllerAspect(logBeforeController:18)] ClassName = xxx.xxxx.NoticeController , MethodName = noticeList

 왜냐하면 AspectController.java에서 log를 찍도록 설정했으니 추가적으로 ClassName과 MethodName을 붙여주지만 가독성이 좋지 않는 느낌이었습니다.

 

그래서 차라리 각 컨트롤러의 함수 시작 부분에 log.info 정보를 쓸까 고민을 했습니다. 

[2021-6-30 10:00] INFO  [xxx.xxxx.MainController(home:18)] ...
[2021-6-30 10:07] INFO  [xxx.xxxx.MemberController(memberList:30)] ...
[2021-6-30 10:11] INFO  [xxx.xxxx.NoticeController(noticeList:60)] ...

이렇게 보니 aop는 서비스가 걸린 시간을 기록하기에 더 적합하다고 생각합니다.

 

4. Affirmation (자기 선언)

- 나는 실제 프로젝트에 도움이 될만한 좋은 기능들을 항상 고민하는 사람이다

반응형

'회고' 카테고리의 다른 글

TIL_210702  (0) 2021.07.06
TIL_210701  (0) 2021.07.06
TIL_210629  (0) 2021.07.01
TIL_210629  (0) 2021.06.29
TIL_210617  (0) 2021.06.17