spring

[스프링 교과서] 스프링 컨텍스트: 빈 정의

kimkim615 2024. 8. 23. 18:07

스프링은 컨텍스트 안의 인스턴스를 사용해서 앱이 제공하는 다양한 기능에 앱을 연결한다

컨텍스트는 사용자가 정의한 인스턴스를 스프링이 제어할 수 있게 해주는 복잡한 메커니즘이다.

 

2.1 메이븐 프로젝트 생성

이 책에서는 아파치 메이븐 Apache Maven 프로젝트로 생성한다

메이븐은 앱의 빌드 프로세스를 쉽게 관리할 수 있는 도구임

빌드에 자주 포함되는 작업은 아래와 같다

- 앱에 필요한 의존성 내려받기

- 테스트 실행

- 구문이 정의한 규칙 준수 여부 검증

- 보안 취약점 확인

- 앱 컴파일

- 실행 가능한 아카이브에 앱 패키징 

 

 

src 폴더 : 소스 폴더, 앱에 속한 모든 것을 넣을 수 있음

ㄴ main 폴더 : 애플리케이션 소스 코드 저장

ㄴ test 폴더 : 단위 테스트의 소스 코드 저장

pom.xml 파일 : 새 종속성 추가처럼 메이븐 프로젝트 구성을 작성하는 파일

 

 

<dependencies> 와 </dependencies> 태그 사이에 의존성들을 추가함

그 안에 <dependency> 와 </dependency> 태그 사이에 의존성을 포함해서 표현한다

 

위처럼 pom.xml 파일에 새 종속성을 추가하면 메이븐은 해당 종속성을 나타내는 JAR 파일을 내려받음

이는 프로젝트의 External Libraries 폴더에서 찾을 수 있음

 

2.2 스프링 컨텍스트에 새로운 빈 추가

 

 

Parrot 클래스의 인스턴스를 생성하고, 프로젝트에 스프링 컨텍스트 의존성을 추가한 후

스프링 컨텍스트의 인스턴스를 생성했다.

 

그니까 지금까지 한 것은 Parrot 인스턴스를 생성했지만, 스프링 컨텍스트 외부에 있으며

그리고 스프링 컨텍스트를 정의했지만 현재 비어있다.

 

이제 스프링 컨텍스트에 Parrot 인스턴스를 추가하면 스프링이 해당 인스턴스를 볼 수 있다

 

스프링 컨텍스트에 빈(bean)과 같은 새로운 객체 인스턴스를 추가하는 방법에는 여러개가 있다

-> 스프링이 빈 일부인 객체만 관리할 수 있기 때문에 추가하는 것임

 

1. @Bean 애너테이션 사용

1단계: 프로젝트에서 구성 클래스 정의하기

스프링 구성 클래스는 @Configuration 애너테이션이 지정되어있다

구성 클래스로 할 수 있는 일 중 하나가 스프링 컨텍스트에 빈을 추가하는 것이다

 

2단계: 빈을 반환하는 메서드를 생성하고 @Bean 애너테이션을 메서드에 추가하기

컨텍스트에 추가하려는 객체 인스턴스를 반환하는 메서드를 정의하고,

그 메서드에 @Bean 애너테이션을 추가해야 함 

 

3단계: 새로 생성된 구성 클래스로 스프링이 컨텍스트를 초기화하도록 만들기

 

2. 스테레오타입 애너테이션(@Component, @Controller, @Service, @Repository ...) 사용

 

3. 프로그래밍 방식