Configuring Spring Container
1. Xml config를 풀로 채우는 방법
: 처음에 배운 방법으로 xml에 빈을 설정하고 id 적고 생성자나 setter를 적는 방법
2. Xml Component를 스캔하는 방법
: 클래스가 있는 디렉토리를 적고 클래스에서는 Annotation을 이용하는 방법
3. Java Configuration File
: Xml을 사용하지 않고 자바 소스코드를 이용하는 방법
잘 작동된다. 바뀐 것은 xml을 클래스 파일로 변경했다는 것과
context를 클래스를 불러올 수 있게 바꾼 것이다.
위는 클래스에 스캔 기능을 넣어서 사용한 것이지만
스캔을 이용할 필요없이 빈을 메소드로 설정하여 쓸 수 있다.
메소드 이름이 bean Id가 된다.
즉, 자바 소스로 container를 표현한거니까
갖고 있는 클래스들을 메소드 이름으로 쓰고
다른 앱에서 클래스를 사용하고 싶을 때
메소드 이름을 입력하면 된다.
그리고 필드나 메소드의 매개변수 또는 생성자를 설정하는 것은
각 클래스에서 하는 게 아니라 이 만남의 모임장인 container 에서 설정한다..
각 클래스에서는 그저 기능 구현만하면 된다.
Bean의 원리
@Bean
이것의 원리는 무엇일까??
어떻게 작동하는 걸까?
@Bean 메소드는 일단 싱글톤으로 저장된다.
누군가 어디서 메소드를 부른다면
@Bean 이 그 요청을 가로챈다.
그리고 메모리에 메소드가 있는 지 확인한다.
없으면 싱글톤으로 인스턴스를 만들어서 놓고
있으면 메모리에 있는 싱글톤 인스턴스를 요청에 응답한다.
Bean의 실시간 사용
스프링 프레임워크 어플리케이션에서 서드파티 클래스를 사용하기 위해서 @Bean을 사용할 수 있다.
서드파티 클래스는 @Component를 지정할 수 없다. 왜냐하면 서드파티는 스프링을 모르기 때문이다.
하지만 @Bean을 이용하면 우리의 스프링 어플리케이션에서 외부 객체를 사용할 수 있다.
스프링 어플리케이션에서 @Autowired를 쓰면 싱글톤인 @Bean 메소드에 접근 가능하다.
즉, 외부 클래스에 @Bean을 쓰고 우리의 스프링 어플리케이션에서 @Autowired를 쓰면 된다.
'컴퓨터공학 > Spring & Hibernate' 카테고리의 다른 글
Spring> MVC> Controller and View (0) | 2021.04.17 |
---|---|
Spring> Annotation> Properties File (0) | 2021.04.15 |
Spring> Annotation> Scope (0) | 2021.04.14 |
Spring> Annotation> Qualifier for Injection (0) | 2021.04.13 |
Spring> Annotation> Setter, Method, Field Injection (0) | 2021.04.13 |