본문 바로가기
✨ Back-end/Spring-Legacy

[Spring-Legacy] @Configuration 과 @Bean, @ComponentScan, @ImportResource

by 환풍 2023. 8. 24.
728x90
반응형

 

이전까지는 Xml을 만들어서 조립을 했는데, 이제는 만들지 않고 조립해보려고한다.

 

@Configuration 과 @Bean

 

ConfigMain

ApplicationContext context

 스프링 컨테이너를 나타내는 객체이다. 컨테이너는 빈을 생성하고 관리하며, 의존성 주입 등을 수행하는 역할을 한다.

AnnotationConfigApplicationContext(ConfigDemo.class)

ConfigDemo 클래스를 이용하여 애노테이션 기반의 스프링 컨테이너를 생성한다. 

ConfigDemo 클래스 내에 정의된 @Bean 메서드들을 이용하여 빈들을 생성하고 구성하게 된다.

 

 

StateServer

데이터를 담아 줄 객체를 하나 생성했다.

 

ConfigDemo

@Configuration 

@ComponentScan, @ImportResource 어노테이션과 @Bean 메서드들을 사용하여 스프링 빈들을 설정하고 관리한다.

@Bean

해당 메서드들은 스프링 빈을 정의하는 역할을 한다. 메서드의 반환 값이 스프링 컨테이너에 빈으로 등록된다.

name으로 이름을 생성해주지 않으면 메소드의 명으로 Bean 객체가 생성된다.

 

DmlServer

 

ConfigMain

ConfigDemo클래스에서 생성한 Bean을 main메소드에서 불러와 위와 같이 데이터를 출력할 수 있다.

 

<dependency>
    <groupId>cglib</groupId>
    <artifactId>cglib</artifactId>
    <version>3.3.0</version>
</dependency>

만약 에러가 뜨면 위 코드를 삽입해야한다.

pom.xml

pom.xml 여기에 넣어주자.


@ImportResource 

 

ConfigDemo

@ImportResource

 XML 형식의 스프링 설정 파일을 가져와서 해당 설정을 현재 설정 클래스와 함께 사용한다.

지정된 XML 설정 파일에 정의된 빈들도 함께 스프링 컨테이너에 등록된다

 

현재 보면 다른 패키지에 있는 person안에 생성된 bean 객체를 가지고 오려고 하는 것이다.

 

ConfigMain

person1 이라는 객체를 가지고 출력해볼 수 있다.

 


@ComponentScan

 

ConfigDemo

@ComponentScan(basePackages = {"com.bit.di.basic5"})

com.bit.di.basic5 패키지와 그 하위 패키지에 있는 컴포넌트 어노테이션이 붙은 클래스들을 스캔하여 스프링 빈으로 등록한다.

 

Message

이렇게 @Component만 설정하고 @Bean으로 설정안해도 뜰 수 있게 된다.

 

ConfigMain

Bean 객체를 받아와 이름을 넣어주면 @Component로 만들었는데도 불구하고 출력되는걸 확인할 수 있다.

 

728x90
반응형

댓글