본문 바로가기

전체 글

(77)
스프링 핵심 원리 - 기본편 : 빈 스코프(2/2) 스프링 핵심 원리 - 기본편 : 빈 스코프(2/2) - 웹 스코프 웹 스코프는 웹 환경에서 동작하는 스코프로 프로토타입 스코프와는 다르게 컨테이너가 생성과 소멸을 모두 관리한다. 때문에 소멸 메소드 또한 빈이 소멸하는 시점에 호출된다. 웹 스코프의 종류는 request, ssesion, application, websocket 가 있다. 참고 중인 강의에서는 request에 대한 예제로 진행된다. request 스코프는 HTTP 요청 하나가 들어오고 나갈 때까지 유지되는 스코프로, HTTP 요청마다 별도의 빈이 생성되고, 요청이 종료되면 소멸된다. 아래서 진행되는 예제는 각각 HTTP의 요청과 request 빈에 대한 로그를 출력하는MyLogger 클래스를 통해 진행된다. - request 스코프 예제 ..
스프링 핵심 원리 - 기본편 : 빈 스코프(1/2) 스프링 핵심 원리 - 기본편 : 빈 스코프(1/2) - 빈 스코프란? 빈의 생명주기가 '빈이 생존해 있을 때 생성과 소멸 사이에서 무엇을 할 것인가' 에 대한 것이라면 빈 스코프는 '빈이 언제 생성되고 언제 소멸될 것인가'에 대한 것이다. 즉 빈이 존재할 수 있는 범위를 결정한다. 지금까지는 디폴트로 설정되어 있는 싱글톤 스코프만 다뤘다. 싱글톤 스코프는 컨테이너가 생성되며 같이 등록되고, 컨테이너가 종료될 때까지 유지되는 가장 넓은 범위로 존재하는 스코프이다. 그 이외에 프로토타입, 웹 관련 스코프에 대해 알아보려고 한다, 먼저 프로토타입 스코프이다. - 프로토타입 스코프 빈으로 생성할 클래스 위에 @Scope를 추가하므로써 빈의 스코프를 지정해 줄 수 있다. 아래는 클래스를 프로토타입 스코프로 지정하..
스프링 핵심 원리 - 기본편 : 빈 생명주기 콜백 스프링 핵심 원리 - 기본편 : 빈 생명주기 콜백 어플리케이션의 데이터베이스 커넥션 풀, 네트워크 소켓 등 시작과 종료 시점에서 연결하고 연결을 끊는 작업이 꼭 필요한 경우가 있다. 이러할 경우 빈의 생명주기(Life cycle)을 활용해 빈이 생성되고 종료되는 시점 사이 특정 시점에 객체를 초기화 하고 종료하는 작업이 실행되도록 할 수 있다. 스프링 빈의 생명 주기는 아래와 같다. 스프링 컨테이너 생성 → 스프링 빈 생성 → 의존관계 주입 → 초기화 콜백 → 사용 → 소멸전 콜백 → 스프링 종료 빈이 생성되고 의존관계가 모두 주입되어 이제 사용하기 전 단계(비즈니스 로직이 실행되기 전에)에 초기화 콜백을 통해 객체의 네트워크 연결 등의 초기화 작업을 진행하고, 어플리케이션이 종료 되는 시점 직전에 소멸..
[2015-1-15] 스프링 공부와 프로젝트 준비 고민,,, 스프링 공부 내용 정리 2022.01.15 - [Spring] - 스프링 핵심 원리 - 기본편 : 의존관계 자동 주입(2/2) 스프링 핵심 원리 - 기본편 : 의존관계 자동 주입(2/2) 스프링 핵심 원리 - 기본편 : 의존관계 자동 주입(2/2) - 롬복과 최신 트랜드 Lombok 라이브러리를 사용하면 생성자, getter setter 와같은 수정자를 직접 작성하지 않고 어노테이션을 통해 간편하 unannn.tistory.com 스프링으로 로그인 시스템 구현 - 하루만에 미루기,,, 일단 인증과 인가에 대해 어떤 방식으로 구현할 것인가. 에 대해서 부터 처음부터 막혔다. JWT, 세션 방식 등 쉽게 설명해 놓은 수많은 자료들과 영상들이 있지만 이 것을 직접 구현하는 것은 전혀 다른 일 이었다. 이제 스..
스프링 핵심 원리 - 기본편 : 의존관계 자동 주입(2/2) 스프링 핵심 원리 - 기본편 : 의존관계 자동 주입(2/2) - 롬복과 최신 트랜드 Lombok 라이브러리를 사용하면 생성자, getter setter 와같은 수정자를 직접 작성하지 않고 어노테이션을 통해 간편하게 추가할 수 있다. 때문에 의존관계 주입을 통해 할당된 객체의 불변성은 유지하면서, 필드주입처럼 편리하게 개발할 수 있다. 아래 이미지처럼 @RequiredArgsConsturctor 어노테이션을 사용하고 생성자를 작성하지 않아도된다!! @RequiredArgsConstructor는 컴파일 단계에서 final로 선언된 필드를 매개변수로 받는 생성자 코드를 생성하여 자동으로 추가해준다. 때문에 컴파일이 완료된 .class 파일에는 아래 이미지처럼 생성자가 추가되고 @RequiredArgsConst..
[2022-1-14]스프링 공부 + 프로젝트 준비 오늘 스프링 공부 정리 2022.01.14 - [Spring] - 스프링 핵심 원리 - 기본편 : 의존관계 자동 주입(1/2) 스프링 핵심 원리 - 기본편 : 의존관계 자동 주입(1/2) 스프링 핵심 원리 - 기본편 : 의존관계 자동 주입(1/2) - 다양한 의존관계 주입 방법 지금까지 클라이언트 클래스가 구현클래스에게 의존하지 않고 생성자를 통한 의존관계 주입(DI)을 통해 객체지 unannn.tistory.com 프로젝트 구상 계속 알고리즘 문제 풀이 + 인강 듣고 정리를 반복하다 보니 개발하는 방법을 까먹어 버릴 것 같았다. 때문에 프로젝트를 진행해보려고 마음먹어 보았는데 팀원들 없이 혼자 개발할 생각을 하니 너무 막막하게 느껴졌다. 그러던 중 로그인, 회원가입 시스템의 백엔드를 개발 해봐야겠다고 ..
스프링 핵심 원리 - 기본편 : 의존관계 자동 주입(1/2) 스프링 핵심 원리 - 기본편 : 의존관계 자동 주입(1/2) - 다양한 의존관계 주입 방법 지금까지 클라이언트 클래스가 구현클래스에게 의존하지 않고 생성자를 통한 의존관계 주입(DI)을 통해 객체지향의 OCP, DIP를 지킬 수 있었다. 하지만 의존관계 주입은 생성자 뿐만아니라 다양한 방법으로도 가능하다. 생성자 주입 말그대로 클래스의 생성자를 통해 의존관계를 주입받는다. 딱 한번만 호출되어 주입된 객체의 불변성을 보장한다. 때문에 final 키워드를 사용할 수있다. final 은 불필요한 변경을 컴파일 단계에서 막을 수 있다는 장점을 가진다. 스프링을 통해 DI컨테이너를 생성할때, 컴포넌트 스캔을 통해 빈을 등록한다면 생성자가 단 하나만 존재한다면 @Autowired를 생략 가능하다. (스캔 당하는 클..
[2022-1-13]스프링 핵심 원리 - 기본편 : 컴포넌트 스캔 스프링 핵심 원리 기본편 : 컴포넌트 스캔 - 컴포넌트 스캔과 의존관계 자동 주입 시작하기 @Bean 으로 빈을 등록는 방식은 빈이 수십 수백개가되면 자바코드가 너무길어져 개발자의 실수가 생길 가능성이 커진다. 때문에 Spring은 컴포넌트 스캔이라는 기능을 사용해 설정파일에 등록할 빈을 작성하는 것이 아니라, 직접 빈으로 등록될 객체에 직접 @Component라는 애너테이션을 추가하여 빈으로 등록하는 기능을 제공한다. 아래는 @ComponentScan 을 사용한 Configuaration 코드이다. @Configuration @ComponentScan( basePackages = "hello.core", excludeFilters = @ComponentScan.Filter(type = FilterTyp..