스프링 AOP
·
Study/Spring
AOP란 무엇인가AOPAOP(Aspect-Oriented Programming, 관점지향 프로그래밍)는 관심사 분리를 통해 코드 중복을 줄이고 유지보수성을 향상시키는 프로그래밍 패러다임입니다. AOP를 검색하면 가장 처음 나오는 AI개요를 그대로 가지고 왔다. 하지만 한가지 의문이 들었다.𝐐. 관심사 분리를 통해 이점을 얻은 패러다임인데 관심사 분리 프로그래밍이 아니라 관점 지향 프로그래밍인 걸까관심사가 흩어져 있는 여러 모듈의 코드 안에서 하나의 관점으로 공통된 처리를 할 수 있도록 해주는 패러다임이기 때문이다.예를 들어 트랜잭션 처리라는 관심사는 서비스 전반에 걸쳐있는데 우리는 트랜잭션의 관점에서 코드를 처리하겠다는 의미이다.AOP가 필요한 이유만약 성능 테스트를 위해 모든 메소드의 시작시간과 종료..
스프링 의존성 주입
·
Study/Spring
목차DI(Dependency Injection)란?DI 구현 방식 종류스프링의 IoC 컨테이너스프링 내부 동작 원리현재의 방법DI란객체간의 의존관계를 외부에서 생성해주는 패턴 A에서 B 객체를 사용해야할 때, A 안에서 B b = new B()를 통해서 B를 먼저 생성해주고 b.xx 형식으로 B의 메소드를 호출해서 사용하는 방법이 쉽게 떠오르는 방법이다.하지만 이 방법의 단점은 B의 변경사항이 A에 영향을 미치는 것이다. 이 말을 처음들었을 때는 무슨 변경사항이 영향을 미친다는 것인지 이해가 되지 않아 예시를 찾아봤다.직접 생성하는 방법public class MemberRepository { public void save() { System.out.println("DB에 저장"); ..
스레드풀 전략
·
Study/Spring
스레드를 직접 사용할 때의 문제점1. 스레드 생성 시간으로 인한 성능 문제2. 스레드 관리 문제3. Runnable 인터페이스의 불편함스레드 생성 시간으로 인한 성능 문제스레드를 생성할 때는 비용이 상당히 많이 든다. 어떤 작업을 하나 수행할 때마다 스레드를 생성해서 실행하면 작업의 시간보다 스레드 생성 시간이 더 오래 걸리는 상황이 발생할 수 있다. 스레드 관리 문제스레드는 CPU와 메모리를 사용하기 때문에 무한하게 만들 수 없다.CPU와 메모리가 가 감당가능한 선에서 스레드를 만들어야한다.Runnable 인터페이스의 불편함 Runnable 인터페이스에는 크게 2가지 불편함이 있다.첫번째는 Runnable 인터페이스의 run() 메소드는 반환값을 가지지 않기 때문에 다른 메소드에서 해당 스레드가 종료되..
서블릿 컨테이너의 이해
·
Study/Spring
다룰 내용웹 서버와 웹 어플리케이션 서버WAS의 역할서블릿서블릿 컨테이너정리웹 서버와 웹 어플리케이션 서버서블릿 컨테이너를 학습하기 전에 웹 서버와 웹 어플리케이션 서버에 대한 전반적인 흐름에 대해서 이해 하는 것이 서블릿 컨테이너의 동작을 이해하는데 더 도움 될 것이라고 생각한다. 사용자에게 요청이 들어오면 웹 서버와 WAS를 거쳐 데이터베이스에서 사용자가 요청한 데이터를 가지고와서 사용자에게 응답을 내려준다. 서블릿 컨테이너는 WAS 내부에서 동작한다.웹 서버는 정적인 페이지를 사용자에게 보여주고 웹 WAS는 웹 서버 + 프로그램을 실행하는 역할을 수행한다. 웹 서버와 웹 어플리케이션 서버에 대한 내용도 깊게 다루면 여러가지 기술이 있겠지만 서블릿 컨테이너에 대한 글이기 때문에 건너뛰겠다.WAS의 역..
스프링 시큐리티의 구조와 대체 방안
·
Study/Spring
이 글을 쓰게 된 배경스프링부트 프로젝트에서 로그인/회원가입 기능을 만들면서 스프링 시큐리티를 학습하는 과정을 담은 글입니다. 스프링 시큐리티의 내용이 너무 많아서 오랜 기간동안 학습하면서 여러번에 걸쳐서 작성했습니다. 다룰 내용Spring Security란?Spring Security를 사용해야 하는 이유Spring Security 구조Spring Security 이외에 인증/인가를 대체할 방법Spring Security란?Spring security란 스프링의 Filter를 이용하여 스프링부트에서 제공하는 인증/인가를 지원하는 프레임워크 입니다.Spring Security를 사용해야 하는 이유Spring Security는 애플리케이션의 보안을 체계적으로 관리하고, 최신 보안 표준을 준수하며, 다양한 ..