Spring Framework - 마무리
2023. 5. 26. 00:51
Spring & JPA/Spring
마무리하며 지금까지 스프링 프레임워크의 가장 핵심적인 코어 부분을 다루어 보았다. 간략하게 각 파트들을 정리하면서 스프링 프레임워크의 핵심적 원리들은 여기서 마무리한다. DI와 IoC 그리고 스프링 객체지향 설계를 위시한 SOLID부터 시작하여 일반적인 다형성으로는 그 한계가 있음을 보았고 이를 해결하기 위해 DI를 생각하였다. 그리고 이 DI를 개발자가 아닌 외부에서 자동으로 컨트롤하는 것이 더 편리하다는 생각을 하게 되고 이는 IoC의 개념이 되었다. 이러한 DI와 IoC를 스프링 프레임워크에서는 스프링 DI 컨테이너를 통해 지원하였다. 스프링 프레임워크에서 DI 컨테이너를 통하여 저 두 개의 개념을 지원함으로서 개발자는 저 개념을 신경쓰지 않고도 편리하게 개발을 수행할 수 있게 되었다. 스프링 컨테..
Spring Framework - 빈 스코프 - 3. 웹 스코프와 Provider, 프록시
2023. 5. 25. 20:30
Spring & JPA/Spring
들어가며 이전 포스트까지 싱글톤 스코프와 프로토타입 스코프에 대해 알아보았다. 싱글톤 스코프는 스프링 DI 컨테이너와 생명 주기를 같게 하는 기본적인 스코프였다. 프로토타입 스코프는 스프링 DI 컨테이너가 빈의 생성과 의존관계 주입까지만 수행하고 넘기는, 호출할 때 마다 새로운 인스턴스가 반환되는 스코프였다. 이번 포스트부터는 웹 스코프에 대해 알아본다. 웹 스코프는 웹 관련 라이브러리가 필요하다. 따라서 부득이하게 Spring Web MVC 기술을 사용할 것이다. 웹 스코프 웹 스코프는 웹 환경에서만 동작하는 스코프이다. 프로토타입 스코프와는 다르게 웹 스코프는 스프링 프레임워크가 해당 스코프의 종료 시점까지 관리한다. 따라서 프로토타입 스코프에서 호출되지 않는 @PreDestroy등의 메서드등이 호출..
Spring Framework - 빈 스코프 - 2. Provider
2023. 5. 25. 18:05
Spring & JPA/Spring
들어가며 이전 포스트에서 빈 스코프의 개념과 프로토타입 빈에 대해 알아보았다. 그리고 프로토타입 빈이 싱글톤 빈과 같이 쓰일때 생길 수 있는 문제에 대해서도 알아보았다. 이번 포스트에서는 해당 문제에 대해 짤막히 리마인드 하고, 해당 문제를 해결할 수 있는 방법에 대해 알아본다. Spring Framework - 빈 스코프 - 빈 스코프와 프로토타입 스코프 들어가며 이번 포스트부터는 빈 스코프에 대해 알아보고 여러가지 스코프에 대해서 알아보도록 한다. 빈 스코프의 개념과 스코프의 종류 빈 스코프의 개념 지금까지 우리는 스프링 컨테이너가 sehun5515.tistory.com 싱글톤 빈, 프로토타입 빈 동시 사용시 발생하는 문제 싱글톤 빈 내부에 프로토타입 빈을 주입하여 사용해야 하는 상황을 생각해 보자...
Spring Framework - 빈 스코프 - 1. 빈 스코프와 프로토타입 스코프
2023. 5. 25. 01:14
Spring & JPA/Spring
들어가며 이번 포스트부터는 빈 스코프에 대해 알아보고 여러가지 스코프에 대해서 알아보도록 한다. 빈 스코프의 개념과 스코프의 종류 빈 스코프의 개념 지금까지 우리는 스프링 컨테이너가 스프링 빈을 싱글톤으로 관리하는 것만 파악하였고, 자동으로 DI와 빈을 탐색하는 컴포넌트 스캔을 수행하는 것 까지 배웠다. 하지만 빈 자체의 생명 주기 즉 어느 시점에서 생성되어서 어느 시점에 소멸되는지에 대해서는 이전 포스트였던 빈 생명관리에서 처음 알아보았을 것이다. 지금까지 우리가 실험해보고 확인했던 모든 스프링 빈은 스프링 컨테이너가 올라갈 때 부터 생성되기 시작해 스프링 컨테이너가 종료되면 같이 소멸되는 스프링 컨테이너와 유지되는 시간이 동일한 스프링 빈만 따져보았다. 이는 스프링 컨테이너에서 스프링 빈을 생성시킬때..
Spring Framework - 스프링 빈 생명주기와 콜백
2023. 5. 24. 00:30
Spring & JPA/Spring
들어가며 이번 포스트는 스프링 빈의 생명 주기(Life Cycle)에 대해 알아보도록 한다. 스프링 빈의 생명 주기 DB 커넥션이나 네트워크 소켓처럼 앱 시작 시점에 연결을 진행하고, 앱 종료 시점에 연결을 모두 종료하는 작업을 수행하기 위해서는 객체의 초기화 및 종료시에 작업을 할 수 있도록 해야한다. 다음과 같은 간단한 코드를 보자 public class NetworkClient{ private String url; public NetworkClient(){ System.out.println("constructor called"); connect(); call("initializeing msg") } public void connect(){ System.out.println("connect : " +..
Spring Framework - 의존관계 자동 주입 - 4. 정리
2023. 5. 23. 23:38
Spring & JPA/Spring
들어가며 이전 포스트까지 의존관계 자동 주입에 대해 스프링 프레임워크가 어떤 방식으로 수행하는지에 대해 알아보았다. 이번 포스트에는 전체적인 정리와 동일한 타입의 여러 빈이 모두 필요할 때, 그리고 자동 주입과 수동 주입에 대한 기준점에 대해 알아본다. 의존관계 주입 방식과 자동 의존관계 주입 의존관계 주입 방식 의존관계 주입 방식은 생성자 주입, 수정자 주입, 필드 주입, 일반 메서드 주입의 4가지로 나뉘었다. 생성자 주입은 생성자를 이용하는 방식이었고, 수정자는 Setter를 이용하여 주입하는 자바 빈 프로퍼티 접근 방식을 차용하였다. 필드 주입은 말 그대로 변수에 그대로 주입을 수행하는 방식이었고, 메서드 방식은 생성자와 동일하나 일반 메서드라는 점이 차이점이었다. 여기서 가장 안정적인 주입 방식은..
Spring Framework - 의존관계 자동 주입 - 3. @Primary와 @Qualifier
2023. 5. 22. 02:08
Spring & JPA/Spring
들어가며 이전 포스트에서는 의존관계 자동주입의 방식 중 Constructor Injection(생성자 주입)을 사용해야 하는 여러가지 이유와 생성자나 Getter, Setter등과 같은 보일러플레이트 코드를 줄여주는 롬복을 알아보았다. 이번 포스트에서는 의존관계 자동 주입을 사용 시에 조회되는 스프링 빈이 2개 이상일 때 발생하는 문제와 이를 어떻게 해결할 수 있는지에 대한 방법을 알아본다. Spring Framework - 의존관계 자동 주입 - 생성자 주입의 장점과 lombok 들어가며 이전 포스트에서 스프링 프레임워크가 의존관계 자동 주입을 하는것과 자동 주입 방식에 대해 알아보았다. 사실 이전에 배운 3가지의 DI 방식 중 어떤 방식을 사용해야 하는가에 대해 sehun5515.tistory.com..
Spring Framework - 의존관계 자동 주입 - 2. 생성자 주입의 장점과 lombok
2023. 5. 18. 01:41
Spring & JPA/Spring
들어가며 이전 포스트에서 스프링 프레임워크가 의존관계 자동 주입을 하는것과 자동 주입 방식에 대해 알아보았다. 사실 이전에 배운 3가지의 DI 방식 중 어떤 방식을 사용해야 하는가에 대해서는 이미 정해진 방식이 존재한다. 바로 생성자 주입(Constructor Injection) 방식인데 이번 포스트에서는 왜 생성자 주입을 사용해야 하는가에 대한 이유와 lombok을 통한 코드 간소화 방법에 대해서도 알아본다. Spring Framework - 의존관계 자동 주입 - 의존관계 주입 방법 들어가며 이전 파트인 컴포넌트 스캔의 경우에는 스프링 프레임워크에서 어떻게 각 클래스들을 스프링 빈으로 자동으로 등록하하는지에 대해 알아보았다. 이번 파트에서는 @Configuration에서 직 sehun5515.tist..
Spring Framework - 의존관계 자동 주입 - 1. 의존관계 주입 방법
2023. 5. 17. 01:37
Spring & JPA/Spring
들어가며 이전 파트인 컴포넌트 스캔의 경우에는 스프링 프레임워크에서 어떻게 각 클래스들을 스프링 빈으로 자동으로 등록하하는지에 대해 알아보았다. 이번 파트에서는 @Configuration에서 직접 수행하는 방식의 수동 의존관계 주입이 아니라 자동으로 DI를 하는 의존관계 자동 주입을 스프링 프레임워크에서 어떻게 수행하는지에 대해 알아본다. 만약 DI의 개념이 혼동스럽거나 기억나지 않는다면 DI의 개념 포스트나 다른 곳에서 DI의 개념을 확실히 익히고 보는 것을 추천한다. Spring Framework - DI의 개념 - 2. 다형성의 한계 돌아보기 1에서는 SOLID 원칙과 다형성에 대해서 잠시 언급했었다. 문제는 다형성을 사용하는것 만으로는 SOLID를 모두 지키면서 구현이 매우 힘들다는 점이다. 이번..
Spring Framework - 컴포넌트 스캔 - 2. 컴포넌트 스캔 위치, 대상, 필터
2023. 5. 15. 15:37
Spring & JPA/Spring
들어가며 이전 포스트에서 자동으로 클래스를 스프링 빈으로 등록해주는 컴포넌스 스캔에 대하여 알아보았다. 이번 포스트에서는 컴포넌트 스캔의 범위 지정과 컴포넌트 스캔 대상, 필터와 중복된 컴포넌트가 존재할 경우에 대해 다루어 볼 것이다. Spring Framework - 컴포넌트 스캔 - 1. 컴포넌트 스캔과 의존관계 자동 주입 들어가며 이번 포스트부터는 스프링 프레임워크가 @Bean으로 직접 수동으로 스프링 빈을 등록하지 않는 상태에서도 어떻게 객체들을 스프링 빈으로 등록하는지와 의존관계를 자동 주입하는 방 sehun5515.tistory.com 컴포넌트 스캔의 시작 위치 스프링 프레임워크도 결국 JVM위에서 돌아가는 일종의 자바 소스 코드의 집합에 불과하단 사실을 인지하고 있어야 한다. 이 말은 결국 ..