본문 바로가기

스프링26

(6)빈 자동 등록과 자동 주입 @ComponentScan 과 @Autowired 개발자의 편의를 위해 @Configuration 클래스 내에서 @Bean을 통해 수동으로 등록하지 않고 자동으로 등록하는 방법이 존재한다. @ComponentScan 어노테이션을 사용하면, @Component 어노테이션이 붙은 클래스가 자동으로 빈으로 등록된다. 빈 이름은 첫글자가 소문자인 클래스 이름 그대로 설정된다. #AutoAppConfig @Configuration @ComponentScan(excludeFilters = @Filter(type = FilterType.ANNOTATION, classes = Configuration.class)) public class AutoAppConfig { } // 기존에 만든 Config 클래스를 제외하기 .. 2023. 5. 15.
(5) 스프링 컨테이너 - 싱글톤 스프링은 태생적으로 웹 어플리케이션에 특화되어 있는데, 웹 어플리케이션은 보통 같은 요청이 동시다발적으로 들어오곤 한다. 만약 100명의 고객이 동일한 요청을 한다고 가정해보자. 그러면 동일한 역할을 하는 객체를 100개를 생성하게 될 것이다. 그런데 그 요청이 모든 고객에게 공통적인 사항이라면 (ex - 공지사항 출력, 판매 상품 출력 등) 100개의 객체를 생성하는 것보다 1개의 객체를 100명이 공유하는게 메모리 측면에서 더 효율적일 것이다. 즉, 싱글톤을 사용해야 한다. 순수 싱글톤 만들기 자바 코드를 사용하지 않고 싱글톤 패턴을 만들수 있다. 핵심은 아래와 같다. 1. static키워드를 사용해서 미리 자신의 인스턴스를 만들어두고, final키워드를 더해 재할당이 안되도록 만든다. 2. 매개변수.. 2023. 5. 14.
(4) xml을 통한 빈 등록과 BeanDefinition 빈을 XML로도 등록이 가능하다, 이는 매우 귀찮고 최근에는 사용하지 않는 한물간 방식이다. 따라서 등록 원리에 대해서만 간단하게 설명하고 넘어가도록 하겠다. ApplicationContext ac = new GenericXmlApplicationContext("appConfig.xml"); AnnotationConfigApplicationContext() 처럼 GenericXmlApplicationContext를 사용해 xml파일을 넘기면, 해당 파일 내부에서 Bean으로 등록하도록 설정한 클래스들이 빈으로 등록된다. 아래의 xml파일을 보자. id 는 빈이 등록되는 이름, class는 빈으로 등록할 클래스의 경로가 된다. 만약 빈으로 등록하려는 객체가 생성자 함수를 통해 매개변수를 주입받아야 하면 다.. 2023. 5. 10.
(3) 스프링 컨테이너와 빈 조회 스프링 컨테이너 스프링 컨테이너의 종류 BeanFactory 스프링 컨테이너 최상의 인터페이스다. 스프링 빈을 관리, 조회하는 역할을 담당한다. getBean()을 비롯하여 다수의 기능을 제공한다. ApplicationContext BeanFactory를 상속받는 인터페이스다. 국제화기능, 환경변수, 어플리케이션 이벤트 등 다양한 추가 기능을 제공한다. BeanFactory를 직접 사용할 일은 거의 없다. 부가기능이 포함된 ApplicationContext를 사용한다. BeanFactory나 ApplicationContext를 스프링 컨테이너라 한다 AnnotationConfigApplicationContext : ApplicationContext의 구현체다. 생성자 함수에 @Configuration 클.. 2023. 5. 10.