인텔리제이에서 MySQL을 연동하려고 삽질만 4시간 가량했다.
원래 있던 프로젝트 파일에 연동하려니까 헷갈리고, 안되니까 더 헷갈리고 삽질만 죽어라고 했는데 너무 간단하게 해결됐다...하...
이것저것 시도하는 과정에서 빈 등록을 빼먹었는데 다른 오류때문에 신경도 안쓰고 있다가 나중에 어디서 빠뜨렸는지도 모르게 되어서 삽질한 케이스이다. 아악 시간아까워
마지막 시도를 위의 포스팅으로 성공했기 때문에 다음에 또 연동할 일이 있으면 참고하고자 삽질한 과정을 정리해본다.
첫번째 문제 - dependencies에 mysql connect를 추가하지 않음
처음 프로젝트를 생성할 때 mysql 의존성 추가를 해놓지 않았다는 사실은 까맣게 잊어버리고 mybatis만 추가해놓고 삽질하고 있었다.
프로젝트 생성할 때 의존성추가에 들어가야하는 것들 잊지말고 확인하자...
두번째 문제 - application.yml에 mysql url을 틀림
내가 타이핑을 직접하면 오타가 날 확률이 높다고 생각해서 코드를 복붙해서 수정할 부분만 수정했는데 역시나 시도를 거듭하면서 파일을 삭제하고 생성하는 과정에서 mysql url를 바꾸지 않아서 에러가 났다.
url: jdbc:mysql://host:port/test?characterEncoding=utf8
host:port를 바꾸지도 않고 그대로 쓰려고하니 mysql을 찾을 수 없다고 에러가 나지...ㅠ 이렇게 오타가 나는 부분은 정말 찾기 힘든 것 같다
세번째 문제 - JavaBean을 생성하지 않음
이건 포스팅마다 방식이 달라서 생긴 문제인데, 내가 봤던 대부분의 포스팅에서는 JavaBean을 등록하는 설정 코드를 추가하는 방식을 써놓지 않았다. 어떤게 맞는 방식인지는 모르겠지만 해당 설정 클래스를 추가하니 또 하나의 에러를 잡았다.
위의 포스팅에서는 ~Application.java 클래스에 코드를 추가하였지만 새로운 클래스에 설정 코드를 추가하는 방법을 발견하여 후자 방식을 사용했다.
config > DatabaseConfig.java
package hello.hellospring.config;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.Resource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import javax.sql.DataSource;
@Configuration
@MapperScan(basePackages = "hello.hellospring.dao")
public class DatabaseConfig {
@Bean
public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {
SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
sessionFactory.setDataSource(dataSource);
Resource[] res = new PathMatchingResourcePatternResolver().getResources("classpath:mappers/*Mapper.xml");
sessionFactory.setMapperLocations(res);
return sessionFactory.getObject();
}
}
중간쯤에 이 방식을 사용했을 때도 오류가 났었는데 지금 생각해보니 basePackages명이 com.hello.hellospring.*인데 com.hello.*으로 중간에 하나를 빼먹어서 그랬던거 같다.
네번째 문제 - DAO 빈등록을 안함
제일 어이없는 실수
위의 문제를 다 해결했는데도 bindingException이 떠서 아무리 검색을 해봐도 잘못된 부분이 없어보였다. 거의 1시간을 날렸는데 알고보니까 service 클래스에 dao 의존성 주입을 안했다..... @Autowired로 의존성 주입을 해주고나니 전부 해결!
몇시간동안 계속 같은걸 보고 있어서 머리가 굳어버렸던게 아닐까 싶다. 앞으로 뭔갈 할 때는 중간중간 뇌를 쉬어주면서 하기로..!
'Study > Trouble Shooting' 카테고리의 다른 글
[삽질로그] Entity 관련 삽질 (0) | 2022.06.08 |
---|---|
[삽질로그] 깃 잔디가 안심어지는 문제 (0) | 2022.05.16 |
[삽질로그] 파이썬 missing 1 required positional argument: 에러 (0) | 2022.05.15 |
[삽질로그] Unsupported class file major version 61 에러 (0) | 2022.04.03 |
[삽질로그] Mybatis String -> LocalDate 형변환 에러 (0) | 2022.02.22 |