본문 바로가기

스프링

[Spring] xml Spring IOC

XML을 사용하는 이유 : DI구성이 자바코드를 수정하고 클래스를 다시 컴파일 하는 과정이 귀찮은 과정이므로. 컴파일과 같은 별도의 빌드작업이 없고 빠르게 변경사항을 반영할 수 있다.

 

 

 

2.     Beans의 네임스페이스 : 스프링은 DI를 위한 태그들 <beans>, <bean>을 사용할 수 있는 법을 제공하기 때문에 스키마 파일에 정의되어 있고, 독립적인 네임스페이스를 사용해야 하므로 네임스페이스로 선언해 주어야 한다.(DTD보단 스키마를 사용하는 편이 바람직함. 독립적인 네임스페이스를 위함)

2.     <beans> : 스프링 어플리케이션 컨텍스트는 XML:에 담긴 DI정보를 활용할 수 있으며, 해당 루트 엘리먼트를 사용한다. 자바의 @Configuration 과 동일하다.

7.     <bean> : @Bean AnnotationConfigApplicationContextgetBean을 통해 메서드명을 검색하지만 id를 통해 검색할 수 있다. 아래 스샷 참조

7. class : 오브젝트를 만들 때 사용하는 클래스명. 리턴타입은 지정하지 않아도됨.

 

l  Bean 등록시 유의사항

여러 스레드에서 동시에 사용해도 괜찮은가? 즉 상태정보를 가지고 있지 않은가 따져볼것.( 026.SpringSingletonScope편 참조)

 

16. GenericXmlApplicationContext : XML에서 빈의 의존관계 정보를 이용하는 IOC/DI 작업에서 사용됨.

16. “applicationContext.xml” : 경로에 “/” 는 넣을 수도 있고 생략할 수도 있다. /가 없는 경우에도 항상 루투에서 시작하는 클래스패스

* ClassPathXmlApplicationContext : GenericXmlApplicationContext 대신 사용할 수 있다. 예를 들어 UserTest.java의 경우 spring.user.test 패키지에 있는데 java파일과 동일경로에 있는 context.xml을 읽는 경우. 패키지명을 길게 써줘야 하기 때문에 이를 동일경로시 패키지를 생략할 수 있다. 보통 GenericXmlApplicationContext을 써주는 것이 무난함.

'스프링' 카테고리의 다른 글

[spring] junit 1  (0) 2020.10.13
[Spring] SpringJDBC_Test  (0) 2020.10.12
[spring] 수정자메소드(setter) DI  (0) 2020.10.12
[spring] spring ioc_DI  (0) 2020.10.10
[java] IOC_오브젝트팩토리  (0) 2020.10.10