Spring

Spring_ XML에 빈 등록 / 사용 _ 22.07.05(day02)

양빵빵 2022. 7. 5. 12:19

 

 - XML에 빈 등록 하기 

  먼저 외부 라이브러리에서 SPRING 버전을 살펴 보았다.

 

 

 

지금 학습은 SPRING 5버전 으로 진행중

 

 

버전에 대해 이해야하는 이유에 대해 설명.

 

 

XML 파일은 RESOURCES 폴더에 만든다.

 

 

 

여기서 잘못했었어는데

 

 

파일명뒤에 확장자 .xml을 써줬어야 했다.

 

 

 

xml이 아닌 파일을 가지고 실습을 하다보니 혼자 멘탈이 나갔었습니다.

그래도 꾸역꾸역 쫓아갔어요.

 

 

 

 

xml 시작 할때 설정 검색해서 xml파일에 복붙.

 

여기는 현재 xml 파일이 아닌상태

 

 

주석이 안먹혀서 고민하다가 html로 수업 쫓아가던중 급하게 만들었지만 실패

그래도 주석은 따라 쓸수 있었다.

 

 

<bean> </bean> bean 하나 등록할때마다 태그 하나씩

<bean id = "c" class = "com.spring.core.chap02.JuanChef"> </bean>

 

id = 빈 이름을 지정

class = 생성할 객체의 풀 패키지 경로 

 

 

 

setter 주입 태그를 xml에서 빈등록 하려고 할때

Restaurant 인터페이스의 구현체인 EasternRestaurant 를 생성자로 만들때

 

Chef 와 Course 타입의 매개변수가 필요하다.

 

 

 

 

[확인]

Hotel 클래스에 매개변수는 restaurant 와 chef 이다.

 

 

<bean id = "hotel" class ="com.spring.core.chap02.Hotel">

 

 <constructor-arg name = "restaurant" ref = "res">

 <constructor-arg name ="chef" ref = "c">

 

위에는 headChef 라고 입력했는데 에러가 발생했다.

 

 

 

테스트 클래스 생성

 

 

<?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">

    <!-- id는 빈 이름 지정  class속성에는 생성할 객체의 풀 패키지경로 -->
    <bean id="c" class="com.spring.core.chap02.JuanChef" />

    <bean id="sc" class="com.spring.core.chap02.SushiCourse" />
    <bean id="fc" class="com.spring.core.chap02.FrenchCourse" />

    <bean id="res" class="com.spring.core.chap02.WesternRestaurant">
        <!--   setter 주입 태그 name속성에는 필드명, ref에는 참조할 빈의 아이디  -->
        <property name="chef" ref="c" />
        <property name="course" ref="fc" />
    </bean>

    <bean id="hotel" class="com.spring.core.chap02.Hotel">
        <!--          생성자 주입 태그      -->
        <!--        name에는 생성자 매개변수명, ref는 주입할 빈의 아이디   -->

        <constructor-arg name="restaurant" ref="res" />
        <constructor-arg name="headChef" ref="c" />
    </bean>

</beans>

 

 

 

 

 

 

 

 

 

 

Hotel의 매개변수를 잘못 입력하여 에러가 발생.

 

 

 

 

 

 

 

 

확장자 html에서 xml로 변경

 

 

 

Hotel 매개변수 chef로 변경

 

 

 

잘 실행 됩니당