BEAN3 스프링 핵심 원리 - ComponentScan의 자동 빈 등록과 빈 탐색 관련 옵션, 빈 중복에 의한 충돌에 대한 고려 Repeat is the best medicine for memory 앞서 스프링에 의한 의존관계 주입에 있어서, @Configuration과 @Bean의 개념과 활용법에 대해서 알아보았다. 그런데, 스프링을 통한 객체들을 관리받기 위해서 모든 클래스에 @Configuration과 @Bean을 붙이는 점을 상상해보면 번거로움과 누락에 의한 문제가 발생할 것이라고 예상할 수 있다. 또 단순 반복적인 작업은 너무나 귀찮다.. 스프링은 역시나 이러한 번거로움을 해결하기 위해서 자동으로 Bean을 등록해주는 ComponentScan이라는 기능을 제공한다.( + @Autowired ) ComponentScan 자동 빈 등록 ComponentScan이 어떤 방법으로 자동 Bean 등록을 도와주는 지 확인해보자... Spring/SpringCore - basic 2024. 12. 30. 스프링 핵심 원리 - 싱글톤 컨테이너(stateless 코드 작성의 필요성과 @Configuration의 바이트 조작(CGLIB)을 통한 싱글톤 작동원리) Repeat is the best medicine for memory 스프링의 싱글톤스프링 컨테이너는 싱글톤이 적용되었다. 그 이유는 어플리케이션의 목적과 특수성을 생각해보면, 아래와 같은 고려 사항들이 있기 때문이다. 위의 내용처럼 웹 어플리케이션은 다수의 고객이 동시에 요청하는 경우가 빈번하게 발생한다.만약, 요청마다 새로운 인스턴스를 만들어 고객의 요청에 대응하는 어플리케이션이라면, 메모리 사용 관점에서 매우 비효율적이다. 이와 같은 상황을 스프링이 적용되지 않은 순수한 DI 환경으로 구성한다면, 아래와 같은 테스트 코드로 표현할 수 있을 것이다. public class SingletonTest { @Test @DisplayName("스프링 없는 순수한 DI 컨테이너") void .. Spring/SpringCore - basic 2024. 12. 28. 스프링 핵심 원리 - 스프링 컨테이너와 스프링 빈(컨테이너 생성 원리 및 다양한 Bean 조회 방법들) Repeat is the best medicine for memory 지금까지 다뤘던 내용들은 객체 지향적인 관점을 기준으로 스프링이 하는 역할과 핵심 원리을 이해하기 위한 과정이었다.이제, 스프링 자체에 대한 이해와 학습을 위한 내용들을 정리해보겠다.스프링 컨테이너 생성 방법과 작동 원리 먼저, 스프링 컨테이너가 생성되는 과정에 대해서 알아보자. ApplicationContext applicationContext = new AnnotationConfigApplicationContext(Appconfig.class); 위의 코드 부분이 이전 포스팅에서 스프링 컨테이너를 만드는 로직에 해당한다.코드의 내용은 ApplicationContext 타입의 변수에 사용할 구현체로 어노테이션 기반의 자바 설정을 .. Spring/SpringCore - basic 2024. 12. 27. 이전 1 다음