스프링 부트 프로젝트 생성
Service, Reposity파일 생성
public class BookService {
BookRepository bookRepository;
public void setBookRepository(BookRepository bookRepository) {
this.bookRepository = bookRepository;
}
}
public class BookRepository {
}
메인 클래스의 @SpringBootApplication
애노테이션을 지우고 고전적인 방법으로 설정해 본다.
스프링 IoC 컨테이너는 설정 파일이 필요하다.
고전적인 빈 설정 파일은 xml에 빈을 정의한다.
application.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="<http://www.springframework.org/schema/beans>"
xmlns:xsi="<http://www.w3.org/2001/XMLSchema-instance>"
xsi:schemaLocation="<http://www.springframework.org/schema/beans> <http://www.springframework.org/schema/beans/spring-beans.xsd>">
<bean id="bookService"
class="me.baldongdong.springapplicationcontext.BookService">
<property name="bookRepository" ref="bookRepository" />
</bean>
<bean id="bookRepository"
class="me.baldongdong.springapplicationcontext.BookRepository" />
</beans>
property의 name은 Service의 setter에서 가져온 것이다.
ref는 다른 bean의 id를 참조 하는 것이다.
빈 설정 파일을 사용하는 ApplicationContext 파일을 만들어서 사용한다.
public class DemoApplication {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("application.xml");
String[] beanDefinitionNames = context.getBeanDefinitionNames();
System.out.println(Arrays.toString(beanDefinitionNames));
BookService bookService = (BookService) context.getBean("bookService");
System.out.println(bookService.bookRepository != null);
}
}
// [bookService, bookRepository]
// true
빈을 일일히 등록하기가 매우 번거롭다. 그래서 나온것이 애노테이션과 bean scanning이다. (spring 2.5 부터)