
Web Scope 웹 스코프는 웹 환경에서만 동작하는 특징을 가지고 있으며 프로토타입 스코프와 다르게 종료 시점까지 스프링 컨테이너가 관리하기 때문에 종료 메서드를 호출해준다 웹 스코프를 사용하는 이유는 클라이언트에게 서비스를 제공하다 문제가 생겼을 때 보통 로그를 확인하여 디버깅을 진행한다 하지만 이때 동시에 접속한 여러 고객들의 요청이 뒤죽박죽 섞여 있으면 아주 힘든 상황이 될 것이다 그래서 공통적인 포맷으로 깔끔하게 로그들이 정리되어서 출력되도록 해주는 것이 웹 스코프의 역할이다 웹 스코프의 종류는 아래와 같이 다양하다 1. request HTTP 요청에 하나가 들어오고 나갈 때까지 유지되는 스코프이다 각각의 HTTP요청 마다 별도의 빈 인스턴스가 생성되고 관리된다 2. session HTTP Se..

데이터베이스나 커넥션 풀, 네트워크 소켓처럼 애플리케이션이 시작하는 시점에 연결을 미리 해야 하는 상황이 있다 이때 종료시점에 맞춰 연결을 모두 종료하려면 객체의 초기화와 종료 작업이 필요하다고 한다 초기화 같은 작업은 빈 객체를 생성하고 의존관계의 주입이 끝난 다음에야 필요한 데이터를 사용할 수 있도록 준비가 된다 즉 개발자가 언제 의존관계가 주입이 되는지를 알아야 한다 Bean 생명주기 의존관계를 알기 위해서는 우선 빈의 생명주기를 알아야 한다 스프링 빈은 대략적으로 아래와 같은 생명주기를 가지고 있다 (초기화 콜백: 빈이 생성되고 빈의 의존관계 주입이 완료된 후의 호출) (소멸 전 콜백: 빈이 소멸되기 직전의 호출) 이때 생성자 주입의 경우 스프링 빈이 생성됨과 동시에 의존관계가 주입이 되며(파라미..

스프링 컨테이너에 빈을 등록하기 위해서는 @Bean이나 XML의 을 통해서 직접 등록할 수도 있지만 수많은 스프링 빈을 등록할 때는 매우 비효율적이다 Component @Bean이나 을 사용하지 않고 빈을 등록할 수 있게 스프링은 Component Scan(컴포넌트 스캔)을 제공하는데 말 그대로인 컴포넌트 '스캔'을 위해서 '컴포넌트'를 먼저 등록해주어야 한다 @Component public class MemoryMemberRepository implements MemberRepository {} 이렇게 등록된 컴포넌트들은 컴포넌트 스캔이 이 어노테이션의 여부를 보고 스프링의 빈으로 등록하게 된다 Component Scan 컴포넌트 스캔이 어노테이션들을 조회할 기준은 base package를 통해 결정된..

Spring의 주요 특징 중하나인 AOP에 대해 알아보자 예로 아주 간단한 회원가입 웹사이트를 만든다고 해보자, 핵심 로직들은 CRUD 즉 회원가입, 조회, 수정, 삭제 등이 될 것이다 그런데 만약 사이트의 성능을 체크하기 위하여 각 로직들마다 수행하는데 어느 정도의 시간이 걸리는지 측정하려면 일일이 각 로직들에게 시작시간 - 끝나는 시간 등의 코드를 작성하여 뽑아야 할 것이다 하지만 이렇게 각 로직에 시간 측정이라는 기능을 넣게 되면, 유지 보수가 힘들 뿐만 아니라 본래 기능에 다른 기능이 들어오기 때문에 객체 지향의 핵심 원칙 중 하나인 SRP에도 어긋나게 된다 이때 각 로직이 공통으로 가지고 있는 기능(관심사)을 하나로 묶어서 실행시켜 준다면? 이를 가능하게 하는 것이 바로 AOP이다 AOP(Asp..

DI , 의존성 주입을 알기 위해서는 의존성이 뭔지부터 알아야겠다 Object Dependencies(객체 의존성) 현재 객체가 다른 객체와 상호작용을 하고 있다면 현재 객체는 다른 객체에 의존성을 가진다 public class A { private B b = new B(); } 간단하게 말하자면 한 객체에서 다른 객체를 가지고 와서 쓰면 그게 바로 의존성이다 이 의존성에는 단점이 있는데, A 객체는 B객체의 생성을 제어하기 때문에 두 객체 간에는 긴밀한 결합이 생기고 이에 따라 A 객체를 변경하면 B의 객체도 변경된다 즉 A 객체가 변경되면 B 객체도 변경된다는 것이다 또한 이렇게 두 객체 사이에 의존성이 존재하면 단위 테스트 작성이 어려워진다 DI(Dependency Injection) 의존성 주입 ..
- Total
- Today
- Yesterday
- Session
- 제이쿼리 탐색선택자
- DTO와 VO의 차이
- ExceptionHandlerExceptionResolver
- Cache
- cookie
- OOP
- 제이쿼리 직접 선택자
- Spring MVC
- application/x-www-form-urlencoded
- 세션
- jQuery 직접 선택자
- @ResponseStatus
- 제이쿼리 위치탐색선택자
- ResponseStatusExeceptionResolver
- 캐시
- http
- Spring Container
- 제이쿼리 인접 관계 선택자
- 맨코
- Spring TypeConverter
- uri
- DefaultHandlerExceptionResolver
- 제이쿼리 기본 선택자
- Spring API Error
- spring
- @ExceptionHandlere
- maenco
- 쿠키
- 제이쿼리란
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |