본문 바로가기

프레임워크/Spring

(16)
[프레임워크] <Spring>〈Gradle〉@PathVairalble @PathVairalble ◎ Command 객체 외에 해당 Contoller 메서드에서 필요한 데이터를 View측에서 전송한 경우 요청 경로에 보낸다. ◎ View측에서 전송한 데이터를 Controller 메서드에서 받기 위해 사용하는 @어노테이션이다. ⇨ 메서드 인자에서 받는다.
[프레임워크] <Spring>〈Gradle〉프로젝트 특징 MC ◎ 컨트롤러 ◎ 모델 정적웹 리소스 ◎ html ◎ 이미지 ◎ 템플릿 동적웹 리소스 ◎ jsp 의존성 설정 plugins { id 'java' id 'war' id 'org.springframework.boot' version '3.2.3' id 'io.spring.dependency-management' version '1.1.4' } group = 'com.koreait' version = '0.0.1-SNAPSHOT' java { sourceCompatibility = '17' } repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' provide..
[프레임워크] <Spring>〈Maven〉Command객체를 활용한 Controller Command 객체 ◎ 사용자의 입력을 나타내는 객체이다. ◎ 사용자가 웹 페이지에서 양식을 작성하고 제출할 때, 이 양식에 입력된 데이터를 수집하고 처리하기 위해 사용된다. @Controller에서의 활용 ◎ 인터페이스가 아니므로 메서드 시그니쳐 강제성이 사라진다. ◎ 이전에는 req, res를 인자로 가지므로 완전한 POJO는 아니었다. ◎ 바로 DTO로 받아올 수 있다. ⇨ Spring 컨테이너 ➔ DTO(Command 객체)를 new ➔ req에 저장된 정보중에 DTO 멤버변수와 같은 파라미터명이 있다면 해당 값 추출 가능하다. ➔ 추출한 값을 DTO 멤버변수에 set 가능 : setter 활용 ⇨ DAO,MAV ➠ Model,JSP 내장객체(Session)도 Command 객체가 될 수 있다. ..
[프레임워크] <Spirng>〈Maven〉Spring에서의 MVC2 구조 기본 MVC2 구조의 흐름 ◎ 브라우저 ⇩ ◎ 요청 ⇩ ◎ 요청정보를 FrontController==Dispatcher에서 받아서 요청을 확인 ⇩ ◎ HandlerMapping으로 해당 요청에 대해서 어떤 Controller가 필요한지 확인 ◎ 팩토리 패턴을 활용하여 요청(String)을 받으면 Controller(객체)를 반환 ⇩ ◎ Controller는 메서드를 수행 ➠ Service ➠ DAO String을 반환 ⇩ ◎ Action을 수행하면 ActionForward==ViewResolver를 사용하여 응답 ◎ ViewResolver가 Controller에서 반환된 String을 보고 사용자에게 VEIW 페이지를 응답 의존관계 ◎ Dispathcer-Servlet ⇨ HandlerMapping, V..
[프레임워크] <Spring>〈Maven〉Transaction Transaction ◎ 더 이상 쪼갤 수 없는 최소 작업 단위를 의미한다. ◎ 비즈니스 메서드의 실행 중 문제가 생겼을 경우 이전 상태로 롤백하기 위해 사용되는 것이다. Transaction을 사용하기 위한 추가 스키마 ◎ xmlns:tx="http://www.springframework.org/schema/tx" ◎ http://www.springframework.org/schema/tx ◎ http://www.springframework.org/schema/tx/spring-tx-4.2.xsd 트랜잭션을 하기 위한 설정 ◎ advisor ⇨ == aspect == 위빙 // 모든 문에 대해 트랜잭션 //SELECT문에 대해 트랜잭션 // 위빙/결합 처리
[프레임워크] <Spring>〈Maven〉JDBCTempalete을 활용한 DAO JDBCTempalete ◎ 템플릿 패턴을 활용한 클래스이다. ◎ 반복되는 JDBC의 로직을 캡슐화한 클래스이다. ◎ 가독성이 증가한다. 템플릿 패턴 ◎ 반복되는 로직 또는 복잡한 로직을 캡슐화한 것이다. 기존 코드 package com.spring.biz.common; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.SQLException; public class JDBCUtil { static final String driverName="com.mysql.cj.jdbc.Driver"; static final String url="jdbc:mysql://l..
[프레임워크] <Spring>〈Maven〉Advice의 @어노테이션화 추가 xml 설정 LogAdvice @어노테이션 ◎ Aspect ⇨ 반복적으로 발생하는 관심사를 분리하여 모듈화한다. ◎ Before ⇨ 지정된 포인트컷(Pointcut)이 실행되기 전에 실행되는 어드바이스를 정의한다. 코드 @Service @Aspect public class LogAdvice { @Before("PointcutCommon.aPointcut()") public void printLog(JoinPoint jp) { String methodName=jp.getSignature().getName(); System.out.println("BEFORE 어드바이스 : "+methodName); Object[] args=jp.getArgs(); System.out.println("비즈니스 메서드에서..
[프레임워크] <Spring>〈Maven〉Advice 동작 시점 동작 시점 ◎ aspect(위빙) 설정할 때 함께 설정한다. 시점 종류 before 비즈니스 메서드 수행 전 after 유사 finally 비즈니스 메서드 수행 후 after-returning 비즈니스 메서드 return 반환 후 after-throwing 유사 catch 비즈니스 메서드 예외 발생 시 around 비즈니스 메서드 수행 전후로 접근가능 핵심로직의 성능평가 AfterReturningAdvice ◎ bean 설정 ◎ Service 코드 public class AfterReturningAdvice { public void afterReturningPrintLog() { System.out.println(" 로그 02 비즈니스 메서드 수행 후에 로그를 출력합니다."); } } AfterThrow..