Back-End/Spring Legacy
-
[5-ch18 Spring AOP] 설정, execution, args, @Around, @before, @AfterThrowingBack-End/Spring Legacy 2022. 9. 7. 14:50
이전 포스팅에서 AOP 개념에 대한 설명을 적어봤다. 이번엔 AOP가 그래서 어떻게 사용되는건데?에 대한 궁금증을 풀어보려고 한다. AOP기능은 주로 일반적인 Java API를 이용하는 클래스(POJO-Plain OldJava Object)들에 적용한다. Controller에 적용이 불가능한 것은 아니지만, Controller의 경우 인터셉터나 필터 등을 이용한다. 포스팅에 적어볼 예제에서는 서비스 계층에 AOP를 적용한다. AOP 기능 구현 과정 1. 타깃(Target) 클래스 지정 -> 핵심코드로 아래 예제에서는 SampleServiceImpl이 핵심 코드 2. 어드바이스(Advice) 클래스 지정 -> LogAdvice 3. root-context.xml에서 빈 생성, aspectj 설정 1. 타깃..
-
[5-ch18 Spring] AOP 개념, 용어(JoinPoint, Pointcut, Advice..)Back-End/Spring Legacy 2022. 9. 7. 11:02
AOP란? AOP는 흔히 '관점 지향 프로그래밍' 이라고 불린다. 이때 '관점(Aspect)'이라는 용어는 개발자들에게 '관심사(concern)'라는 말로 통용된다. '관심사'는 개발 시 필요한 고민이나 염두에 두어야 하는 일이라고 생각할 수 있다. 예를들어 - 파라미터가 올바르게 들어왔을가? - 이 작업을 하는 사용자가 적절한 권한을 가진 사용자인가? - 이 작업에서 발생할 수 있는 모든 예외는 어떻게 처리해야 하는가? 위와 같은 고민들은 '핵심 로직'은 아니지만, 코드를 온전하게 만들기 위해 필요한 고민들이다. 전통적인 방식에서는 개발자가 반복적으로 이러한 고민들을 코드에 반영하게 된다. AOP는 이러한 고민에 대한 문제를 조금 다른 방식으로 접근한다. AOP가 추구하는 것은 '관심사의 분리(sepe..
-
[4-ch17 댓글 처리 ④] 댓글의 페이징 처리 (인덱스 생성, 화면 처리)Back-End/Spring Legacy 2022. 9. 6. 14:01
앞의 포스팅에서는 해당 게시물의 전체 댓글을 가져와서 화면에 출력한다. 문제는 댓글의 수가 엄청 많을 경우이다. 댓글 숫자가 많다면 데이터베이스에서 많은 양의 데이터를 가져와야 되고, 이는 성능상의 문제를 가져올 수 있다. 데이터베이스의 인덱스 설계 댓글에 대해 우선적으로 고려해야 하는 일은 tbl_reply 테이블을 접근할 때 댓글의 번호(rno) 중심이 아니라, 게시물 번호(bno)가 중심이 된다는 점이다. 댓글을 조회할 때에는 해당 게시물의 댓글을 가져오기 때문에 'tbl_reply where bno = 200 order by rno asc'와 같은 방식으로 접근하게 된다. 효율을 높이고 싶다면 게시물의 번호에 맞게 댓글을 모아서 빠르게 찾을 수 있는 구조로 만드는 것이 좋다. 위와 같은 구조를 이..
-
[4-ch17 댓글 처리 ③] jQuery와 Ajax 처리, JavaScript 모듈화Back-End/Spring Legacy 2022. 9. 1. 20:25
JavaScript 모듈화 화면에 사용되는 jQuery는 막강한 기과 다양한 플러그인을 통해 많은 프로젝트에서 기본으로 사용된다. 특히 Ajax를 이용하는 경우 jQuery의 함수를 이용해서 쉽게 사용할 수 있기 때문에 많이 사용한다. 화면 내에서 JavaScript를 처리하다 보면 어느 순간 이벤트 처리와 DOM 처리, Ajax 처리 등이 마구 섞여 유지보수 하기 힘든 코드를 만드는 경우가 있다. 이런 경우를 대비해 좀 더 JavaScript를 하나의 모듈처럼 구성하는 방식을 이용하는 것이 좋다. webapp 내 resources 폴더에 js 폴더 내 reply.js 파일을 작성한다. reply.js 파일은 게시물의 조회 페이지에서 사용하기 위해 작성된 것이므로, views/board/get.jsp 파..
-
[4 -ch17 댓글 처리 ② ] 서비스 영역과 Controller 처리 (@RequestBody, @PathVariable, consumes, produces )Back-End/Spring Legacy 2022. 9. 1. 17:10
게시판에서 게시글을 클릭했을 때 나오는 게시글 상세보기 페이지에서 댓글을 처리하려고 한다. 영속계층, 서비스/ 컨트롤러, javascript로 ajax 처리, 화면 처리 순서대로 작업할 예정이다. https://wonisdaily.tistory.com/71 [4-ch17 댓글 처리 ① ] sql 댓글 테이블 생성과 영속 영역 설계 (MyBatis) 댓글 처리를 위한 영속 영역 댓글 추가하기 위해서 댓글 구조에 맞는 테이블 설계한다. --댓글 테이블 설계 create table tbl_reply ( rno number(10,0), -- 댓글 번호 bno number(10,0) not null, -- 어떤 게시글.. wonisdaily.tistory.com 앞 페이지에서 영속계층 구현은 완료하였다. Repl..
-
[Spring REST] @RequestBody와 @RequestParam 차이Back-End/Spring Legacy 2022. 9. 1. 16:42
컨트롤러에서 데이터를 인자에 할당하는 방법은 대표으로 2가지가 있다. 예를들어 태그로 값을 전달할 때 @RequestBody 데이터를 전송하고 컨트롤러에서 @RequestBody를 통해 데이터를 받아보면 입력한 'jun' 이름과 '13'이라는 나이가 잘 전달되었지만 name=jun&age=13이라는 String으로 전달되어 데이터를 사용하기에 불편함이 있다. @RequestParam 이번엔 @RequestParam으로 받았을 때는 데이터를 저장하는 이름으로 메서드의 변수명을 설정해주어야 한다. 결과적으로 jun이라는 이름이 잘 전달 되었고, 이번엔 name이라는 변수가 할당되어 사용하기에도 용이하다. JSON으로 데이터 전달하기 ajax를 이용해 데이터를 전달하기로 해보자. ajax는 비동기적으로 서버와..
-
[4-ch17 댓글 처리 ① ] sql 댓글 테이블 생성과 영속 영역 설계 (MyBatis)Back-End/Spring Legacy 2022. 9. 1. 12:59
댓글 처리를 위한 영속 영역 댓글 추가하기 위해서 댓글 구조에 맞는 테이블 설계한다. --댓글 테이블 설계 create table tbl_reply ( rno number(10,0), -- 댓글 번호 bno number(10,0) not null, -- 어떤 게시글인지 게시글 번호 reply varchar2(1000) not null, --댓글 내용 replyer varchar2(50) not null, --댓글 작성자 replyDate date default sysdate, --댓글 작성일 updateDate date default sysdate --댓글 수정일 ); select * from tbl_reply; create sequence seq_reply; --식별키(PK) 지정 alter table..
-
[4-ch16 REST 방식] @RestController, ResponseEntity, @RequestParam , 어노테이션과 JSON 알아보기Back-End/Spring Legacy 2022. 8. 31. 15:07
모바일 시대가 되면서 WEB 분야의 가장 큰 변화는 서버 역할의 변화라고 할 수 있다. 과거에는 서버의 데이터를 소비하는 주체가 '브라우저'라는 특정한 애플리케이션으로 제한적이었다면, 모바일의 시대가 되면서 앱이나 웹은 서버에서 제공하는 데이터를 소비하게 된다. 과거의 서버는 브라우저라는 하나의 대상만으로 데이터를 제공했기 때문에 아예 브라우저가 소화 가능한 모든 데이터를 HTML이라는 형태로 전달하고, 브라우저는 이를 화면에 보여주는 역할을 해 왔다. 스마트폰에는 앱(app)이라 불리는 고유한 애플리케이션을 이용해 데이터를 소비하게 되고, 보이는 화면 역시 자신만의 방식으로 서비스하게 된다. 앱에서 서버에 기대하는 것은 완성된 HTML이 아니라 그저 자신에게 필요한 순수한 데이터만을 요구하게 되었다. ..