티스토리 뷰
스프링 Bean 설정방법
XML파일 통해 Bean 생성 후 setter 사용하기
-
먼저 application.xml 파일을 통해 bean을 생성하고 setter를 통해 의존성을 주입해보자!
-
BookService 클래스와 BookRepository 클래서가 있다고 하자
-
우리는 BookService 에 BookRepository를 주입하고 싶다!
-
이 때 위처럼 <bean> 태그를 통해 BookService에 해당하는 bookService Bean을 생성하고
-
BookRepository에 해당하는 bookRepository bean을 생성할 수 있다!
-
그리고 BookService 클래스 에서는
-
setter를 통해 bookRepository를 주입받을 수 있다!
-
그럼 실행 시켜서 결과를 한번 보자
-
bean의 설정이 있는 xml 파일은 스프링 IoC 컨테이너인 Applicationcontext를 통해 읽어들인다
-
application.xml 파일을 통해 빈 설정을 읽어오고 context에서 getBean을 통해 bean을 가져올 수 있다!
-
bean의 목록을 가져와 살펴보자
-
또한 bookService의 boorRepository를 출력해보면 결과는..?!
-
우리가 bookRepository bean을 주입했기 때문에 null이 아닌것을 확인 할 수있다
-
근데 이렇게 생성하면 매번 하나하나 <bean>을 통해 만들어야한다
-
귀찮다..! 좀 더 편한 방법을 살펴보자!!
component-scan을 통해 @애너테이션 사용하기
-
직접 하나하나 <bean>을 통해 만들지 않고 @를 이용할 수도 있다
-
component-scan을 사용하면 base-package를 등록하고 해당 패키지에서 빈을 스캔할 수 있다!
-
대표적으로 @Component,@Service,@Repository,@Controller 를 이용해 Bean을 등록할 수 있다
-
그럼 BookService와 BookRepository를 @를 통해 Bean을 등록해보자
-
@Service와 @Repository는 Bean으로 등록까지만 해준다. 의존성 주입은 @Autowired를 통해서 한다!
-
뒤에서 @Autowired를 같이 더 살펴봅사다..!
-
그럼 결과를 다시 실행해보자!
-
결과가 똑같이 나온다..! 이게 훨씬 편하다...!! 처음에 @를 보고 신세계라고 생각했다 넘편해서
-
근데 xml 파일말고 java 파일로 만들수는 없을까?
ApplicationConfig 파일을 이용해 Bean 설정
-
있따..!
-
ApplicationConfig 클래스를 만들고 @Configuration 을 넣어주었다
-
그 후 여기서 @ComponentScan을 사용했따!
-
basePackageClasses 는 최상단의 클래스를 입력해 해당 클래스가 위치한 곳부터 컴포넌트를 스캔하게 만들었다
-
이번에는 결과를 보기 위해 XML이 아닌
-
AnnotationConfigApplicationContext에 ApplicationConfig로 bean 설정을 가져왔따!
-
결과는...!
-
잘나온다..! true가 출력되는데 넘길어서 짤려따.. 추가로 applicationConfig도 bean으로 들어가있다
-
이게 지금 스프링 부트에서 쓰는 방법과 가장 가깝다고 한다..!
@SpringBootApplication 사용하기
-
스프링 부트에서는 해당 어노테이션을 최상단 클래스에 붙인다
-
이것만으로도 충분하다..! 왜일까?
-
해당 인터페이스를 타고들어가보면 @ComponentScan, @Configuration이 다 포함되어 있다!
-
그래서 최상단의 클래스에서부터 컴포넌트들을 스캔해서 bean을 설정할 수 있다!
-
결론적으로 젤 편하다..!
이번 글은 bean을 설정하는 방법에 대해 알아봤습니다..!
틀린 내용이 있으면 댓글 좀 부.. 탁..!
스프링은 할수록 기초를 잘 해놔야 할 듯 합니다..!
다들 열공~~!
'Spring > Spring IoC' 카테고리의 다른 글
Spring Profile에 대해 알아보자! (0) | 2020.05.18 |
---|---|
Bean의 스코프에 대해 알아보자 (3) | 2020.05.17 |
@ComponentScan에 대해 알아보자 (0) | 2020.05.17 |
@Autowired 를 알아보자 (0) | 2020.05.16 |
스프링 IoC 컨테이너와 빈 (1) | 2020.05.15 |
댓글