이전까지는 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로 만들었는데도 불구하고 출력되는걸 확인할 수 있다.
'✨ Back-end > Spring-Legacy' 카테고리의 다른 글
[Spring-Legacy] @ModelAttribute와 ModelAndView (0) | 2023.08.29 |
---|---|
[Spring-legacy] xml로 AOP 어드바이스(Advice) (0) | 2023.08.25 |
[Spring-Legacy] @Service, @Autowired, @Qualifier 사용법 (0) | 2023.08.24 |
[Spring-Legacy] properties를 이용해 데이터 출력하기 (0) | 2023.08.23 |
[Spring-Legacy] XML과 @Annotation을 이용해 데이터 출력하기 (0) | 2023.08.23 |
댓글