Error creating bean with name 'movieController': Unsatisfied dependency expressed through method 'setMovieDao' parameter 0;
이런 코드가 발생했었다.
분명 마이바티스의 <mybatis-spring:scan base-package="com.ssafy.ws.model.dao"/> 이라는 코드를 이용해서 dao경로에 있는 모든 인터페이스를 자동으로 빈으로 등록했지만 서버를 실행하면 계속 없다고만 떴다.
@Autowired
ResourceLoader resLoader;
private MovieDao moviedao;
private List<Movie> list;
@Autowired
public void setMovieDao(MovieDao moviedao) {
this.moviedao = moviedao;
}
. 이렇게 컨트롤러에 인터페이스를 빈으로 등록해놨으니 설정자 주입을 해줬으나 계속 MovieDao타입이 없다고 에러를 발생.
해결 방법
Test.java로 직접 빈을 불러와서 사용할때는 applicationContext.xml에 등록해서 했지만 웹에서 실행하려면
root-context.xml에 등록을 해줘야 한다.
다시 살펴보니 나는 root-context.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"
xmlns:mybatis-spring="http://mybatis.org/schema/mybatis-spring"
xsi:schemaLocation="http://mybatis.org/schema/mybatis-spring http://mybatis.org/schema/mybatis-spring-1.2.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="dataSource"
class="org.apache.commons.dbcp2.BasicDataSource">
<property name="driverClassName"
value="com.mysql.cj.jdbc.Driver"></property>
<property name="url"
value="jdbc:mysql://localhost:3306/ssafydb?serverTimezone=UTC"></property>
<property name="username" value="ssafy"></property>
<property name="password" value="ssafy"></property>
</bean>
<!-- MyBatis를 사용하기 위한 sqlSessionFactory를 등록한다. -->
<bean id="sqlSessionFactory"
class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<!-- mapper xml 파일의 경로를 ant 표현식의 형태로 사용한다. -->
<property name="mapperLocations"
value="classpath*:mappers/**/*.xml" />
<!-- mapper에서 사용할 DTO들의 기본 패키지를 등록한다. -->
<property name="typeAliasesPackage" value="com.ssafy.ws.model.dto"></property>
</bean>
<!-- mybatis에서 제공하는 scan 태그를 통해 repository interface들의 위치를 지정한다. -->
<mybatis-spring:scan base-package="com.ssafy.ws.model.dao"/>
</beans>
applicationContext.xml 안에만 이렇게 빈으로 등록이 돼 있었다.
그래서 웹에서는 찾지 못한다고 계속 오류를 반환했던 것.
test.java를 사용하면 applicationContext를 사용해서 스프링 컨테이너를 만들지만 웹으로 사용하면 root-context.xml을 사용해서 스프링 컨테이너를 만든다.
반응형
'오류해결' 카테고리의 다른 글
vue랑 스프링부트 연동하는데 스프링에서 null로 받는 에러 (0) | 2023.05.16 |
---|---|
Vue 화면 넘어가지 않는 에러 (0) | 2023.05.14 |
Spring에서 계속 null값이 들어오는 에러 발생 (0) | 2023.05.08 |
Spring 플러그인 에러 (0) | 2023.05.08 |