본문 바로가기

컴퓨터공학/Spring & Hibernate

Spring> Annotation> Java Configuration File

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를 쓰면 된다.