Spring 20

[SpringBoot] 관점 지향 프로그래밍 AOP의 개념과 사용법

🐣 AOP란? AOP(Aspect Oriented Programming)는 관점 지향 프로그래밍이라는 의미이다. 이때 말하는 관점은 아래와 같이 두 분류로 나눌 수 있다. 1. 여러 메서드에 공통으로 사용하는 기능 : 주로 로깅이나 성능 측정과 같은 부가적인 로직이 이에 해당한다. 2. 특정 메소드에서만 사용하는 핵심 기능 : 어플이 제공하는 핵심 비즈니스 로직 그렇다면, "AOP를 사용했을 때 어떤 이점"이 있을까 여러 메서드에 공통적으로 사용하는 코드를 분리함으로써 코드 중복을 줄일 수 있다. 또한, 이 코드에서 수정 사항이 생기면 모든 파일을 살펴볼 필요 없이 분리된 코드만 수정하면 되기 때문에, OOP원칙에 더 맞는 코드가 된다. 또한, 비즈니스 로직에는 부가적인 코드가 섞여있지 않으므로 가독성이..

Programming/Spring 2023.03.22

[Spring] Spring Security Filter와 JWT 동작 과정

JWT란? Json Web Token의 약자로, 토큰을 통해 접근 권한을 확인 할 수 있기 때문에 디지털 서명이라고 볼 수 있다. 이전에는 서버의 session에 로그인한 회원을 저장하고, client에서 session id를 쿠키로 가지고 있어야 했다. 이 방식은 서버 프로그램이 여러 개일 때, 일관성을 유지하기 힘들다는 문제점이 있다. 따라서 따로 어디 저장할 필요 없이 로그인했다는 것을 확인할 수 있는 JWT가 탄생했다. JWT의 구조 1. Header : Signature를 암호화한 알고리즘 정보 & 토큰 타입 정보 2. Payload : Claim 1) 등록된 Claim(필수X) : iss(발행자), exp(만료 시간), sub(제목), aud(청중) 등이 있다. 2) 개인 Claim 정보를 공..

Programming/Spring 2023.02.20

[SpringBoot] ResponseEntity의 개념과 구조

1. ResponseEntity란? *HttpEntity를 상속 받아서, response용으로 만든 클래스 결과 데이터와 HTTP 상태 코드를 이 클래스에 담아 보내면, HTTP 아키텍처 형식에 맞추어 보낸다. @ResponseEntity : 객체와 status를 함께 보내줄 수 있다. @ResponseBody : 객체를 넣으면, 알맞은 header, body, status를 만들어준다. @ResponseStatus(HttpStatus.OK) : 직접 상태를 만들어 줄 수 있다. *HttpEntity HTTP요청 또는 응답을 모두 처리하는 클래스 HttpHeader와 HttpBody를 포함하고 있다. HttpEntity클래스를 상속 받아 구현한 클래스가 RequestEntity, ResponseEntit..

Programming/Spring 2022.11.23

SpringBoot(2) - MyBatis 사용하기

*프로젝트 시작할 때, MyBatis 담아놓고 시작 1. Database 설정하기 application.properties 파일에 작성 #DataBase Setting spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.url=jdbc:mysql://127.0.0.1:3306/testdb?serverTimezone=UTC&useUniCode=yes&characterEncoding=UTF-8 spring.datasource.username=myid spring.datasource.password=mypw 2. Mapper 생성하기 1. src/main/java내에 Mapper 클래스 생성 package com.test..

Programming/Spring 2022.06.10

Spring(12) - REST API1: JSON데이터 넘기기

지금까지 우리가 만든 DTO나 list, int 등의 데이터로 넘겼다면, 이제 이 데이터들을 JSON형식으로 넘기는 방법을 알아보자. 이는 나중에 REST API에 그대로 사용된다. 실행화면 0. JSON 데이터 사용하는 코드 주로, 비동기에서 사용한다. 페이지 전체가 아니라 비동기로 데이터만 받아올 때 자주 사용하기 때문이다. 아래는 회원 정보 list를 뿌릴 때, 회원 정보를 비동기로 받아와서 화면에 뿌리는 작업이다. 1) JSON용 회원 목록 이름 아이디 비밀번호 이메일 가입일자 2) JACKSON용 회원 목록 이름 아이디 비밀번호 이메일 가입일자 1. JSON library 추가하기 pom.xml에 버전과 library추가하기 1. properties 태그에 버전 등록 20220320 2. dep..

Programming/Spring 2022.06.08

Spring(11) - Spring & Mybatis 실습2 : Transaction처리

0. Transaction처리 해주는 이유 transaction이란 DB의 작업 단위이다. Spring에서 SqlSession을 관리할 때, default가 AutoCommit으로 되어있다. Transaction관리자를 등록해서 DB에 작업을 했을 때, Exception이 없으면 commit하고, 있으면 알아서 rollback해주기 위해 사용된다. 1. Transaction library추가 pom.xml에 아래 코드를 추가해서 maven update를 해서 적용시킨다. org.springframework spring-tx ${org.springframework-version} 2. Transaction 관리할 객체 생성&등록하기 1. namespace에 tx 추가하기 root-context.xml의 N..

Programming/Spring 2022.05.07

Spring(10) - Mybatis 실습 3 : 조회

1. mapper에 SQL 코드 작성 1. 값 하나 받아오기 태그 내에 if, include, where태그 등이 올 수 있다. select * from user where userid = #{userId} and userpwd = #{userPwd} 2. 리스트로 받아오기 List라는 객체가 없기 때문에, 구조를 만들어 사용해야 한다. UserDto타입의 list의 이름은 userList로 했고, type.setProperty값(column값)으로 객체가 만들어진다. 그러면 select해오는 곳에서는 이 resultMap을 사용해서 데이터들을 차곡차곡 쌓아 Dao로 반환해준다. select * from user; 2. DAO에서 호출하기 조회할 때는 DB에 변경이 없으므로 commit은 안 한다. @O..

Programming/Spring 2022.05.07

Spring(10) - Mybatis란?

1. Mybatis란? Mybatis는 Java 객체와 SQL문을 자동으로 mapping 해주는 기능을 지원하므로, ORM(Object Relational Mapping) Framework 중 하나이다. 프로그램 코드와 SQL문을 분리할 수 있어 업무 분담을 정확히 할 수 있다. 즉, DB 업무를 하는 사람이 Java 코드를 몰라도 작업이 가능하다. +) Mybatis는 Spring과 별개의 Framework로 Java뿐만 아니라 다른 언어들도 Mybatis를 활용할 수 있다. 2. Mybatis 동작 과정 Controller, Service와 같은 건 생략하고, MybatisFramework와 관련된 부분만 나타냈다. 1) mapper.xml과 dbinfo.properties를 설정 파일에 넣고, 이 ..

Programming/Spring 2022.05.06

Spring(10) - Mybatis 실습 1 : 기본 세팅

1. Mybatis 관련 라이브러리 추가 maven을 사용하고 있기 때문에, pom.xml에 아래 코드를 추가한다. 1. 태그에 버전 정보를 추가한다. //... 3.5.9 2.0.7 2. 태그에 library 불러오는 코드를 추가한다. org.mybatis mybatis ${mybatis-version} org.mybatis mybatis-spring ${mybatis-spring-version} 2. DB와 연결하기 1. Mybatis 설정 파일 생성하기 1) mybatis-config.xml 2) dbInfo.properties (선택사항) 2. DB 연결 코드 작성하기 db관련 정보는 가독성을 위해, 별도의 파일에 작성해서 연결해주었다. 파일을 따로 생성하지 않고 값을 바로 작성해도 된다. #db..

Programming/Spring 2022.05.06

Spring (7) - Spring MVC 프로젝트 구조

1. Spring MVC 프로젝트 구조 파일 구조는 위와 같으며, src/main/webapp/META-INF/context.xml은 직접 생성해야 한다. 없으면 Servers 폴더에 있는 파일이 실행된다. 2. XML 설정 파일 1. pom.xml - 프로젝트의 개발 환경 설정 ex) java버전, 필요한 library 등록 등 2. server.xml - Servers폴더 내에 위치 - server의 설정파일 - 실행 시킬 프로젝트가 등록되어 있다. 3. context.xml - "web project"의 환경 관련 설정 파일 ex) DB Connection Pool 4. web.xml - "web project"의 실행 관련 설정 파일 - Tomcat이 뜨자마자 web.xml을 실행해서 contex..

Programming/Spring 2022.04.29