Spring 18

[Spring] AOP 동작원리 : 리플렉션, JDK 동적 프록시

🎓 이 글은 인프런에서 제공하는 "스프링 핵심 원리 - 고급편" 강의를 수강하면서 정리한 내용을 바탕으로 작성한 글입니다.https://inf.run/FWeFN 이전글 에서 프록시를 사용해서 기존 코드를 변경하지 않고 부가기능을 적용하는 방법을 알아봤다. 그러나 클래스 기반 프록시의 경우 부가기능을 적용해야 하는 대상 클래스가 100개라면 프록시 클래스도 100개 만들어야 했다. 프록시 클래스를 하나만 만들어서 모든 곳에 적용할 수는 없을까 ? 자바가 기본으로 제공하는 JDK 동적 프록시 기술을 활용하면 프록시 객체를 동적으로 만들어낼 수 있다. JDK 동적 프록시를 이해하기 위해서는 먼저 자바의 리플렉션 기술을 이해해야 한다. ※ 리플렉션 기술리플렉션 기술을 통해 클래스나 메서드의 메타정보를 동적..

Spring 2025.06.12

[Spring] 디자인 패턴 : 적은 코드 수정으로 공통 로직을 작성하기

🎓 이 글은 인프런에서 제공하는 "스프링 핵심 원리 - 고급편" 강의를 수강하면서 정리한 내용을 바탕으로 작성한 글입니다.https://inf.run/FWeFN 적은 코드 수정으로 공통 로직을 작성할 수 있기 위해 고안된 메서드 패턴을 소개한다. 공통 로직 (로그 추적기) 요구사항더보기* 모든 PUBLIC 메서드의 호출과 응답 정보를 로그로 출력* 애플리케이션의 흐름을 변경하면 안됨 - 로그를 남긴다고 해서 비즈니스 로직의 동작에 영향을 주면 안됨* 메서드 호출에 걸린 시간* 정상 흐름과 예외 흐름 구분 - 예외 발생 시 예외 정보가 남아야 함* 메서드 호출의 깊이 표현* HTTP 요청을 구분* HTTP 요청 단위로 특정 ID 를 남겨서 어떤 HTTP 요청에서 시작된 것인지 명확하게 구분이 가능해야 ..

Spring 2025.06.11

[Spring] 주문하기 / 장바구니에 담기 / 장바구니 목록 보여주기

productDetail 에서 장바구니 = > cart 에 담기 주문하기 = > order 에 담기 ▶ productDetail.jsp - body ${vo.productName } 판매가격 원 적립금 ${vo.mileage } 원 제조사 ${vo.company } 구매수량 - script = > class = buttons 를 누르면 1. 수량 유효성검사를 하고 수량이 0이면 "수량을 입력하세요" 아니면 class = buttons 의 id 값을 읽어서 변수 type 에 넣는다 2. name = frmPd 인 form 의 action 속성에 mode(order || cart) 를 넘기는 url 을 담는다 3. 2번에서 지정한 action 경로로 submit 된다 ▶ controller - 매개변수에 아..

Spring 2022.06.15

[Spring] 게시판 예제 / 이벤트 상품별로 분류하기 / 선택한 체크박스만삭제하기

※ 이벤트 상품별로 분류하기 - name 이 같은 param 을 value 만 다르게 줘서 메서드 한개로 3가지를 분류할 수 있다 1. 뷰 (productByCategory.jsp) - param 의 이름은 eventName 으로 같고, value 가 다른걸 볼 수 있음 - productEvent 페이지가 import 되어있다 2.컨트롤러 - eventName 이라는 Name 을 가진 파라미터를 받아서 String eventName 에 넣음 @Controller @RequestMapping("/shop/product") @RequiredArgsConstructor public class ProductController { private static final Logger logger =LoggerFact..

Spring 2022.06.14

[Spring] 스프링 작업 순서 / 나를 위한 기초 다지기

[ 스프링 작업 순서 ] ▶ get방식 - 화면 보여주는 페이지 (입력화면, 수정화면, 삭제 화면 등) 1. 링크에 매핑 url 지정하기 (form 태그라면 action 일수도있음) 2. 컨트롤러에서 메서드(핸들러) 틀 잡기 - 어노테이션붙이는 것 3. 뷰페이지 리턴 ( DB작업을 하는 경우 : post 방식과 동일 ) 4. 뷰페이지에서 화면 출력하는 코드 작성 ▶ POST방식 - 실제적인 처리하는 페이지 ( 입력처리, 수정처리, 삭제처리 등 ) 1. Form 태그의 action 속성에 매핑 url 지정 2. 컨트롤러에서 메서드(핸들러) 틀 잡기 3. 컨트롤러에서 - (1) 파라미터 읽어오기 - (2) db작업 : 순서 - mapper xml 에서 쿼리문 작성 - DAO 에서 매핑구문에 해당하는 메서드 ..

Spring 2022.06.10

[Spring] 파일업로드 / 다운로드

※ 파일업로드 처리 · enctype 속성을 "multipart/form-data" 로 설정 / method = "post" · 태그 사용 · 스프링은 Multipart 지원 기능을 제공하고 있기 때문에, 이 기능을 이용하면 추가적인 처리없이 Multipart 형식으로 전송된 파라미터와 파일 정보를 쉽게 구할 수 있다 - 이 기능을 이용하려면 MultipartResolver 를 스프링 설정 파일에 등록해 주어야 함 ▶ MultipartResolver : Multipart 형식으로 데이터가 전송된 경우, 해당 데이터를 스프링 MVC에서 사용할 수 있도록 변환해줌 MultipartResolver 를 사용하기 위해선 설정파일에 등록해줘야 함 ▽ MvcConfiguration.java @Bean public C..

Spring 2022.06.02

[Spring] spring boot 스프링부트

※ 스프링부트 · 스프링 프레임 워크를 사용하면 많은 XML 설정 파일등을 작성하는 등 설정하는 방법이 어려운 편이다. => spring boot 는 간편하게 설정할 수 있는 스프링 프레임웍의 서브프로젝트로, 쉽고 빠르게 프로젝트를 설정할 수 있도록 도와준다 · Spring Boot는 최소한의 초기 스프링 구성으로 가능한 한 빨리 시작하고 실행할 수 있도록 설계되었다 · 내장 Tomcat ㄴ 웹 어플리케이션서버를 통합한 경량의 웹개발 프레임워크 ▶ 스프링부트에서 기본생성되는 폴더 & 파일 ▷ templates 폴더 - src/main/resources/ [templates] 폴더 - 스프링 부트는 타임리프(Thymeleaf) 템플릿 엔진의 사용을 권장 - Thymeleaf (.html), Velocity..

Spring 2022.05.31

[Spring] mybatis

※ mybatis 프레임워크이고 얘는 매우 쉬움 JDBC를 대체하는 퍼시스턴스 프레임워크 ㄴ 영속적인( 영구적으로 db에 저장해줌 ) - dao 작업에서 쿼리문 하나만 입력하면 됨 별도의 xml 이나 어노테이션으로 정의함 ps.set ~ - prepare 에 매핑하는 것 자동으로 해줌 조회결과 자동매핑 SQL 을 이용하여 관계형 데이터베이스를 관리하는 Persistence Layer의 Framework insert할때도 vo 갚을 매핑해주고 select 할때도 vo값을 자동매핑해준다 우리가 일일히 꺼내서 작업할 필요가없음 => JDBC를 이용하여 SQL 구문을 만들기 위하여 VO(Bean)객체의 속성을 직접 접근하거나 또 실행 결과를 VO(Bean) 객체로 담기 위해 일일이 ResultSet 에서 꺼내는..

Spring 2022.05.30

[Spring] 스프링 MVC를 이용한 웹 요청 처리

※ 스프링 MVC 프레임워크 스프링이 제공하는 트랜잭션 처리나 DI, AOP 등을 손쉽게 사용할 수 있다 스프링은 디스패처 서블릿, 핸들러 매핑, 컨트롤러, 뷰 리졸버로 요청을 전달함 ▶ FrontController 클라이언트의 모든 요청을 한 곳으로 집중 시키기 위해서 사용하는 디자인 패턴 ▶ 스프링 MVC의 주요 구성 요소 ▷ DispatcherServlet : 클라이언트의 요청을 전달받는다. 컨트롤러에게 클라이언트의 요청을 전달하고, 컨트롤러가 리턴한 결과값을 view 에게 전달하여 알맞은 응답을 생성하도록 함 ▷ HandlerMapping : 클라이언트의 요청 URL을 어떤 컨트롤러가 처리할지를 결정함 ▷ Controller : 클라이언트의 요청을 처리한 뒤, 그 결과를 DispatcherServ..

Spring 2022.05.26

[Spring] 스프링 프레임워크

※ 프레임워크 - 재사용되는 모듈 - 재사용되는 공통된 부분은 Framework로 구현되어 다른 사람이 그 내부를 가공 없이 이용하도록 제공됨 - 스프링은 애플리케이션 프레임워크라는 특징을 가짐 - ★ 애플리케이션 프레임워크는 특정 계층이나 , 기술, 업무 분야에 국한되지 않고 애플리케이션의 전 영역을 포괄하는 범용적인 프레임 워크를 말한다 ※ 스프링프레임워크 - ★ 스프링은 가벼운 DI 및 AOP기반 컨테이너이자 프레임워크 - 스프링은 자바 객체를 담고 있는 컨테이너 ㄴ 톰캣은 서블릿 객체를 담고있고, 스프링은 자바 객체를 담고있다 - 따라서 더이상 new 로 객체생성하지않을것이다. 왜냐면 스프링이 이미 자바 객체를 가지고있으니까 - 자바 객체의 생성, 소멸과 같은 라이프 사이클 을 관리함 ▶ 특징 ▷..

Spring 2022.05.24