Server/Spring
-
[Spring] Spring Data Redis로 자료구조 사용해보기Server/Spring 2021. 8. 10. 22:59
Spring Data Redis로 자료구조 다루어 보기 Redis 는 간단하게 말하면 Key-Value 형태의 영속성을 지원하는 인메모리 데이터 저장소입니다. 이번 글에서는 Spring Data Redis를 활용해서 List, Set, Sorted Set, Map을 사용해서 데이터를 저장하고 조회하는 것에 대해서 정리해보겠습니다. 먼저 Spring Boot gradle 기반의 프로젝트에서 의존성 부터 추가해서 시작해보겠습니다. gradle implementation 'org.springframework.boot:spring-boot-starter-data-redis' 위의 Spring-data-redis 의존성을 추가하겠습니다. 이제 Redis 설정을 해보겠습니다. Redis 설정 @Configurati..
-
[Spring] Filter와 Inteceptor 란 무엇일까?Server/Spring 2021. 6. 30. 14:15
들어가기 전에 클라이언트가 Request를 보내면 Controller로 오기 전에 만나는 여러 관문들이 존재합니다. DispatcherServlet 에 대해서는 저번 글에서 정리했었습니다. 그리고 Interceptor, AOP가 존재하는데요... AOP는.. 어떤 것이었죠? Spring 삼각형 중에 하나였습니다. 아주 중요한 내용 중에 하나이지만 이번 글에서는 Filter와 Interceptor에 대해서 알아볼 것입니다. Spring Filter란 무엇일까? Filter는 말 그대로 어떤 것을 걸러내는 역할을 하는데요. 그림에서 보면 DisPatcherServlet 앞에 Filter가 존재하는 것을 볼 수 있습니다. 즉, 클라이언트의 요청에 대해서 사전에 걸러내는 역할을 합니다. (ex: CORS, XS..
-
[Spring] Bean LifeCycle 이란 무엇일까?Server/Spring 2021. 4. 29. 09:21
빈 생명주기 콜백(Bean LifeCycle) 데이터베이스 커넥션 풀이나, 네트워크 소켓처럼 애플리케이션 시작 시점에 필요한 연결을 미리 해두고, 애플리케이션 종료 시점에 연결을 모두 종료하는 작업을 진행하려면, 객체의 초기화와 종료 작업이 필요합니다. 스프링 빈도 위와 같은 원리로 초기화 작업과 종료 작업이 나눠서 진행됩니다. 간단하게 말하면 객체 생성 -> 의존관계 주입이라는 라이프사이클을 가집니다. 즉, 스프링 빈은 의존관계 주입이 다 끝난 다음에야 필요한 데이터를 사용할 수 있는 준비가 완료됩니다. Spring 의존관계 주입 과정 가장 처음에는Spring IoC 컨테이너가 먼저 만들어지는 과정이 일어납니다. 위의 그림은 Spring Boot에서 Component-Scan으로 Bean 등록을 시작하..
-
[Spring] Spring 에서 의존성 주입이란 무엇일까?Server/Spring 2021. 4. 29. 09:15
Spring으로 의존성 주입 하기 저번 글 에서 아래의 코드와 같이 내부에서 의존성을 직접 만드는 것이 아니라 외부에서 의존성을 주입해주는 것에 대해서 알아보았습니다. (저번 글을 안보고 오셨다면 먼저 보고 오시는 것을 추천합니다.) public class Car { private Tire tire; public Car(Tire tire) { this.tire = tire; } } 즉, 내부에서 Tire 의존성을 만들면 Car와 Tire는 강한 결합이 생기고, 외부에서 Tire를 주입해주면 Car와 Tire는 느슨한 결합이 될 수 있습니다. (좀 더 유연한 구조가 되는 것입니다.) 위와 같이 의존성 주입을 직접할 수도 있지만, 스프링에서는 Bean으로만 등록되면 IoC 컨테이너가 의존성 주입을 알아서 해..
-
[Spring] 스프링 AOP 개념, 프록시 기반 AOP, @AOP 정리Server/Spring 2020. 7. 24. 15:20
스프링 AOP (Aspect Oriented Programming)란? AOP는 Aspect Oriented Programming의 약자로 관점 지향 프로그래밍이라고 불린다. 그리고 흩어진 Aspect를 모듈화 할 수 있는 프로그래밍 기법이다. 위의 A, B, C 클래스에서 동일한 색깔의 선들의 의미는 클래스들에 나타나는 비슷한(중복되는) 메소드, 필드, 코드들이 나타난다는 것이다. 이러한 경우 만약 클래스 A에 주황색 부분을 수정해야 한다면 B, C 클래스들에 주황색 부분에 해당하는 곳을 찾아가 전부 코드를 수정해야 한다. (유지보수가 쉽지 않다) 이런식으로 반복되는 코드를 흩어진 관심사 (Crosscutting Concerns)라 부른다. 이러한 문제를 AOP는 Aspect를 이용해서 해결한다. 사진..
-
[Spring] @Autowired란 무엇인가?Server/Spring 2020. 7. 21. 14:54
저번 글에서 IoC 컨테이너와 빈(Bean)등록에 대해서 정리해보았다. 다시 정리하자면 의존성 주입과 빈 등록은 다른 것인데 일단 IoC 컨테이너에 빈으로 등록이 되어야 의존성 주입을 할 수 있다. 저번 글에서는 setter와 생성자를 통해서 Inversion of Control로 의존성을 주입하였는데 이번에는 Autowired라는 어노테이션을 이용해서 의존성을 주입하는 것에 대해 알아보려 한다. 1. Autowired란 필요한 의존 객체의 “타입"에 해당하는 빈을 찾아 주입한다. 생성자 setter 필드 위의 3가지의 경우에 Autowired를 사용할 수 있다. 그리고 Autowired는 기본값이 true이기 때문에 의존성 주입을 할 대상을 찾지 못한다면 애플리케이션 구동에 실패한다. 그러면 Autow..
-
[Spring] 스프링 의존성 주입(DI) 이란?Server/Spring 2020. 7. 21. 09:07
Spring 삼각형 스프링의 기반이 되는 설계 개념을 표현한 것 스프링이란 IoC와 AOP를 지원하는 경량의 컨테이너 프레임워크이다. 1. DI(Dependency Injection)이란? Inversion of Control 이라고도 하는 의존 관계 주입(Dependency Injection)이라고도 하며, 어떤 객체가 사용하는 의존 객체를 직접 만들어 사용하는게 아니라, 주입 받아 사용하는 방법이다. (new 연산자를 이용해서 객체를 생성하는 것이라고 생각하면 된다) 장난감들은 베터리가 있어야 움직일 수 있으며 즉 베터리에 의존하고 있다. 장난감들에게 베터리를 넣어주는 것을 의존성 주입이라고 생각하면 좋다. 자바코드로 예시를 들어보자 베터리의 일체형인 경우에는 생성자에서만 의존성을 주입해주는 상황이라..