웹/스프링 6

AOP란? 프록시 패턴이란? 스프링 AOP란? @Transactional 원리

1. AOP란? AOP는 Aspect Oriented Programming의 약자로 관점 지향 프로그래밍이라고 불린다. 관점 지향은 쉽게 말해 어떤 로직을 기준으로 핵심적인 관점, 부가적인 관점으로 나누어서 보고 그 관점을 기준으로 각각 모듈화하겠다는 것이다. 여기서 모듈화란 어떤 공통된 로직이나 기능을 하나의 단위로 묶는 것을 말한다. 예로들어 핵심적인 관점은 결국 우리가 적용하고자 하는 핵심 비즈니스 로직이 된다. 또한 부가적인 관점은 핵심 로직을 실행하기 위해서 행해지는 데이터베이스 연결, 로깅, 파일 입출력 등을 예로 들 수 있다. AOP에서 각 관점을 기준으로 로직을 모듈화한다는 것은 코드들을 부분적으로 나누어서 모듈화하겠다는 의미다. 이때, 소스 코드상에서 다른 부분에 계속 반복해서 쓰는 코드..

웹/스프링 2022.06.03

IOC란? IOC 컨테이너란? DI란? DI 방법

1. IOC란? IoC란 Inversion of Control의 줄임말이며, 제어의 역전이라고 한다. 스프링 애플리케이션에서는 객체(빈)의 생성과 의존 관계 설정, 사용, 제거 등의 작업을 개발자 대신 스프링 컨테이너가 담당한다. 이를 스프링 컨테이너가 코드 대신 오브젝트에 대한 제어권을 갖고 있다고 해서 IoC라고 부른다. 따라서, 스프링 컨테이너를 IoC 컨테이너라고도 부른다. 2. IoC 컨테이너란? 스프링에서는 IoC를 담당하는 컨테이너를 빈 팩토리, DI 컨테이너, 애플리케이션 컨텍스트라고 부른다. 스프링 컨테이너는 단순한 DI 작업보다 더 많은 일을 하는데, DI를 위한 빈 팩토리에 여러 가지 기능을 추가한 것을 애플리케이션 컨텍스트라고 한다. 정리하자면, 애플리케이션 컨텍스트는 그 자체로 I..

웹/스프링 2022.06.02

Spring MVC란?

1. MVC란? MVC는 디자인 패턴이다. 디자인 패턴이란 과거의 소프트웨어 개발 과정에서 발견된 설계의 노하우를 축적하여 그 방법에 이름을 붙여서 이후에 재사용하기 좋은 형태로 특정 규약을 만들어서 정리한 것을 의미합니다. 즉 과거의 노하우를 통해 발견해낸 "효율적인 코드를 만들기 위한 방법론"을 의미합니다. Model은 데이터와 관련된 일(데이터를 가져오고 설정하는 등)을 처리합니다. 데이터베이스가 아니라 프로세스가 동작중일 때 메모리 안에 데이터가 있는 상태를 의미합니다. Controller는 Model과 View의 중개자 역할을 한다. 뷰와 모델을 변경시키는 로직들이 들어갑니다. View는 사용자한테 보여지는 부분(HTML, CSS 등)을 담당합니다. 이처럼 기능 별로 코드를 분리하여, 하나의 파..

웹/스프링 2022.05.31

RedisTemplate 사용해서 Redis 이용하기

아직 공부중이기 때문에 더 추가하거나 수정이 있을 예정입니다. 1. Redis란 무엇인가? 레디스는 모든 데이터를 메모리에 저장하고 조회합니다. 즉, 인메모리 데이터베이스 입니다. 또한 NoSQL로서 Key-Value 타입의 저장소입니다. 여기서 NoSQL은 비관계형 데이터베이스를 지칭합니다. 즉, 관계형 데이터 모델을 지양 하며 대량의 분산된 데이터를 저장하고 조회하는 데 특화되었으며 스키마 없이 사용 가능하거나 느슨한 스키마를 제공하는 저장소를 말한다. 다른 인메모리 디비들과의 가장 큰 차이점은 레디스의 다양한 자료구조 입니다. Redis는 영속성을 지원하긴하지만 영속성의 목적으로 Redis를 잘 사용하지는 않는다. 왜냐하면 레디스의 데이터를 파일로 보관하기 위한 persistence 기능(RDB, ..

웹/스프링 2022.04.18

Spring Boot에서 통합 테스트코드 구현하기(JUnit5 + Mockito)

아래 코드만으로 부족한 경우 깃허브를 참고해주세요: https://github.com/HangHae99Zzz/RoomEscape_BE/tree/main/src/test/java/com/project/roomescape GitHub - HangHae99Zzz/RoomEscape_BE Contribute to HangHae99Zzz/RoomEscape_BE development by creating an account on GitHub. github.com 1. JUnit5란 자바 개발자들이 국내에서 가장 많이 사용하는 테스트 프레임워크이다. Junit5는 3가지로 구성되어 있다. - JUnit Platform : 테스트를 실행해주는 런처와 TestEngine API를 제공함. - JUnit Jupiter ..

웹/스프링 2022.04.17

SQL이란? MVC란?

1. SQL은 관계형 데이터베이스의 데이터를 관리하기 위한 프로그래밍 언어로 크게 3가지 종류가 있다. DDL(데이터 정의 언어), DML(데이터 조작 언어), DCL(데이터 제어 언어)로 구분된다. DDL은 각 릴레이션(테이블)을 정의하기 위한 언어로 CREATE, DROP, ALTER등이 존재한다. DML은 데이터를 관리하기 위한 언어로 SELECT, UPDATE, INSERT등이 있다. 마지막으로 DCL은 데이터의 관리, 접근권한을 다루는 언어로 GRANT, REVOKE 등이 있다. SQL을 예를 들어보자면 SELECT * FROM EMP WHERE NAME = "wonjae"; 이런 식으로 사용하는 프로그래밍 언어다. 하지만 스프링의 JPA를 사용한다면 이런 SQL언어를 통해 직접 DB를 제어하지..

웹/스프링 2022.02.06