xml파일 없이, 완전한 Annotation은 Java를 통해 구현할 수 있다.
1. 등록할 객체에 Annotation 작성하기
아래 글에서 2. Annotation 작성하기 를 따라 작성하면 된다.
2022.04.23 - [웹프로그래밍/Spring] - Spring (3) - Container에 객체(Bean) 설정하기3 : Annotation
2. 설정 파일 생성하기
패키지 안에 작성하지 않아도 되지만, 다른 파일과 구분하고 싶어서 패키지를 만들어 작성하였다.
이름은 ApplicationConfig.java로 만들어주었다.
여기서 Configuration 파일이라는 의미로 @Configuration을 붙여주고,
Annotation을 스캔해서 객체를 등록하라는 의미로 @ComponentScan을 붙여준다.
아래처럼 여러 곳을 스캔하도록 할 수 있지만, 이 프로젝트에서는 하나만 설정해주면 되므로 다르게 쓸 것이다.
@ComponentScan(basePackages = {"com.test.di1", "com.test.di2"})
스캔할 곳을 하나만 설정할 때는 문자열 하나로 작성하면 된다.
//ApplicationConfig.java
package com.test.di1.config;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
@Configuration
@ComponentScan("com.test.di1")
public class ApplicationConfig {
//나중에 DB와 같은 다른 설정을 작성
}
3. Container에서 객체 받아와서 사용하기
앞서 한 xml, annotation의 main과 달리, 객체를 불러올 때 java class를 설정 파일로 하기 위해 AnnotationConfigApplicationContext를 생성하고 java class를 인자로 넘겨주었다.
package com.test.di1;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import com.test.di1.config.ApplicationConfig;
public class TestMain {
public static void main(String[] args) {
//Java파일을 설정파일로 넘겨준다.
ApplicationContext context = new AnnotationConfigApplicationContext(ApplicationConfig.class);
System.out.println("********");
TestService testService1 = context.getBean("ts", TestService.class);
TestService testService2 = context.getBean("ts", TestService.class);
testService1.TestPrint();
System.out.println("ts1 : "+testService1.hashCode() + " == ts2 : "+testService2.hashCode());
}
}
'Programming > Spring' 카테고리의 다른 글
Spring (5) - Spring MVC 패턴 (0) | 2022.04.27 |
---|---|
Spring (4) - MySQL과 연결하기 (0) | 2022.04.25 |
Spring (3) - Container에 객체(Bean) 설정하기3 : Annotation (0) | 2022.04.23 |
Spring (3) - Container에 객체(Bean) 설정하기2 : XML (0) | 2022.04.22 |
Spring (3) - Container에 객체(Bean) 설정하기1 : 프로젝트 생성 (0) | 2022.04.22 |