오타 수정, 경로 수정, 코드 수정으로도 안될때 해결방법:
xml파일이 resources폴더에 없다면 resources폴더로 옮기고 xml경로는 resources하위 상대 경로로 수정!!
책을 보며 setter로 의존성 주입하는 방법을 실습했다.
expert002패키지에 Tire 인터페이스를 만들고 KoreaTire클래스, AmericaTire클래스에서 구현했다.
그리고 Car클래스에서 setter메서드로 Tire객체를 받는 방식이다.
이를 Driver클래스에서 실제 객체를 만들어 주입한다.
이때 책에서는 xml파일에 bean객체를 등록하는 방식을 사용했다.
expert002.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="tire" class="expert002.KoreaTire"/>
<bean id="americaTire" class="expert002.AmericaTire"/>
<bean id="car" class="expert002.Car"/>
</beans>
<bean id=클래스별칭 class=클래스경로/>이며
ClassPathXmlApplicationContext.getBean(클래스별칭, 클래스명.class)로 해당 bean객체를 불러올수 있다.
Driver.java
package expert002;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Driver {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("/expert002/expert002.xml");
Car car = context.getBean("car", Car.class);
Tire tire = context.getBean("tire", Tire.class);
car.setTire(tire);
System.out.println(car.getTireBrand());
}
}
Driver를 실행하니
Exception in thread "main" org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'car' available
이런 오류가 발생했는데, 검색해서 수정해도 예외가 발생해서 뤼튼의 도움을 받았다.
뤼튼:
...우선, expert002.xml 파일이 정확한 위치(일반적으로 resources 폴더 아래)에 있는지 확인하세요.
그리고 나서 ApplicationContext 생성 시 사용하는 경로를 적절한 상대 경로나 절대경로로 수정하세요....
헉 나는 expert002.xml을 resources폴더가 아닌 package폴더에 같이 두고 있었다.
그래서 resource폴더에 expert002폴더를 만들고 거기에 xml파일을 옮겼더니 정상적으로 실행됐다.
찾아보니 resources폴더는 자바 클래스에서 사용하는 리소스(mapper(sql 디렉토리), ws)를 보관하는 곳이고,
DB 연결을 위한 자원, 의존성 주입(DI) 을 위한 xml 파일 등 자바 코드 외 모든 자원은 이곳에 넣어 주면 된다고 한다.
이렇게 하나 배웠다..!
'Springboot' 카테고리의 다른 글
스프링부트 테스트 시 리액트 앱 빌드 건너뛰기 (0) | 2024.02.03 |
---|---|
React & Springboot 통합 빌드시 Whitelabel Error 해결 (0) | 2024.01.24 |
[spring boot 3.1.4]spring security formLogin에서 로그인 안될때 (0) | 2023.10.10 |
intellij community버전에서 spring MVC 프로젝트 생성하기 (0) | 2023.09.19 |
스프링xml로 의존성 주입시 JUnit4와 JUnit5 차이 (0) | 2023.09.19 |