본문 바로가기

Experience8

Spring AOP, Custom Annotation을 이용한 권한 검사 개요스프링을 이용해 개발하며 언제든지 사용할 수 있는 나만의 레거시 코드를 작성해 두어야겠다는 생각이 들어 개발하던 도중 적용했던 권한검사에 관련된 부분을 적어두고자 한다. 다른 많은 방법들이 있겠지만 AOP와 Annotation을 이용한 방법이 개발 도중 만났던 문제점과 현재 회사에서 제시했던 AOP에 대한 문제점을 커버하는 해결책이라 생각하여 적용해 보았다. AOP 사용 시 문제점현재 근무하고 있는 회사에서는 AOP를 사용하지 않는다. 한눈에 코드의 흐름이 들어오지 않기 때문이다. 또한 나만의 레거시 코드를 위해 만들던 프로젝트에서는 일부 메서드에만 권한을 적용하고 싶었으나 순수 AOP만으로는 메서드 별로 적용할 수 없었다. 정리하자면 다음과 같다.복잡성: 코드의 모듈화가 향상되지만, 여러 곳에서 적.. 2024. 5. 8.
MCMS 웹 고도화 프로젝트 후기 개요 목적: mcms 사용자 및 관리자 사이트 고도화 수행 기간: 2023년 6월 17일 ~ 2023년 12월 14일 수행 인원: 풀스택 2 기술 스택: vue.js, jsp, javascript, springframework, java, mybatis, mariaDB 협업 툴: svn CI/CD: jenkins 기존 운영 중이던 mcms 프로젝트를 고도화하는 작업을 담당하게 되었고 사수로써 참여하게 되었다. 사수로 참여하기에는 부족한 점이 많았지만 팀장님께서 맡겨주셨고, 부사수 때와는 다르게 일에 대한 책임감과 부담감을 알게 되며 인간적으로 한층 더 성장할 수 있는 감사한 시간이었다. MCMS란? mcms는 Media Contents Management System의 약자로 미디어 콘텐츠(기록물)를 관.. 2024. 1. 25.
Instagram Api Refresh Token batch 리펙토링 개발도중 Instagram API를 사용해야 할 일이 있었다. 해당 API를 사용하기 위해서는 Token을 발급받아 사용해야 하는데 토큰에 기한이 60일이라 주기적으로 새 토큰을 발급받아야 했다. 그래서 해당 기능을 하는 batch 서비스를 하나 만들게 되었고, 정말 짧은 코드지만 해당 코드를 리펙토링 하는 과정을 메모해 둔다. 초기 작성 코드 @Service public class TokenService { // 선언부 생략... public void callInstaRefreshTokenApi(){ TokenVO.Request tokenRequestData = this.getAccessToken(); webClientUtil.getBaseUrl(properties.getInstagramApiOptio.. 2023. 6. 24.
JRebel이 안될때 확인해 볼 사항들 JRebel을 잘 사용하던 도중 가끔 안될때가 있다. 여러가지 원인들이 있는데 하나씩 문제가 생길때마다 정리해놓고 기억하기위해 글을 작성한다. rebel.xml 파일 생성확인JRebel 사용시 rebel.xml 파일이 생성되어있어야 한다. rebel.xml은 어느 파일을 핫스왑 해줄지 설정 정보가 적혀있는 파일이다. 아래의 이미지처럼 왼쪽의 체크박스를 클릭시 자동으로 rebel.xml 파일이 생성된다.다만 가끔 생성이 안될때가 있는것 같다. 그럴때는 체크박스를 해체했다가 다시 체크해주도록 하자. 이렇게 해도 생성이 안된다면 다른 문제가 있거나 직접 작성해서 사용해보자. 2023. 6. 21.
특수 사례 패턴 (외부 API를 대하는 방법) 클린코드라는 책에서 외부 라이브러리를 대하는 방법에 대해 알려주었다. 마침 진행하는 프로젝트에서 검색엔진이라는 외부 API를 사용하였고 해당 API를 사용할 때 특수 사례 패턴을 사용하여 코드를 작성하였다. 분명 부족한 점들이 많겠지만 이번 글을 통해 어떤 방식으로 적용하였고 어떤 이점들을 얻었는지 정리해보려 한다. 특수 사례 패턴 간단 설명 ✔ 클래스를 만들거나 객체를 조작해 특수 사례를 처리하는 방식이다. 클래스나 객체가 예외적인 상황을 캡슐화해서 처리하므로 클라이언트 코드가 예외적인 상황을 처리할 필요가 없어진다. 특수 사례 패턴 적용 전 문제점들 @GetMapping("/list") public ModelAndView ExampleController( HttpServletRequest reques.. 2022. 12. 19.
MCMS 웹 프로젝트 후기 개요 목적: mcms 사용자 사이트 구축 수행 기간: 2022년 11월 1일 ~ 2022년 12월 3일 수행 인원: 디자이너 1, 풀스택3 기술 스택: jsp, javascript, springframework, java, mybatis, mariaDB 협업 툴: svn 본래 해당 프로젝트는 후기를 작성하지 않으려 하였다. mcms는 관리자 사이트가 거의 모든 기능을 담당하고 사용자 페이지는 대부분 저장된 데이터들을 카테고리별로 분류하여 화면에 뿌려주기만 하면 되는 프로젝트였기 때문이다. 또한 대부분의 시간을 테이블 간의 관계 분석과 쿼리문을 짜는데 보내기도 했다. 그러나 해당 프로젝트에서 테스트 코드를 작성하며 느낀 테스트 코드의 중요성과 검색엔진을 도입하며 공부했던 것을 적용시켜보는 경험이 기억에 남.. 2022. 12. 4.