인프런 커뮤니티 질문&답변
안녕하세요
작성
·
516
3
properties 파일에 datasource가 인식이 안되고 unused로 바뀌는데, 뭐가 문제인지 모르겠네요. 이거때문에 datasource가 없다고해요. html 변경시 서버재시작하기 번거로워 devtools도 추가했는데, 이것도 적용 안되네요. 뭔가 그래들 빌드가 안되는건지.. 어쩌는건지. 조언 부탁드립니다.
퀴즈
순수 JDBC를 사용할 때, 데이터베이스 리소스(연결, Statement 등) 관리가 어려웠던 주된 이유는 무엇일까요?
SQL 쿼리를 직접 작성해야 해서
각 리소스를 사용 후 반드시 직접 닫아줘야 해서
테스트 간 데이터 독립성을 보장하기 어려워서
의존성 주입 설정이 복잡해서
답변 8
2
안녕하세요. Eunna Park님^^
주신 메일보고 확인해보았습니다. 제가 직장인이어서 항상 저녁 늦은 시간에 답변을 드리는 점은 이해를 부탁드릴께요^^
1. application.properties에서 다음과 같이 왼쪽이 회색으로 나오는 것
이것은 인텔리J 커뮤니티(무료) 버전이어서 편의 기능이 빠진 것입니다. 실제 동작하는데는 아무런 문제가 없습니다^^!
엔터프라이즈(유료)버전에서는 왼쪽의 프로퍼티를 누르면 관련된 소스코드로 자동으로 이동하지만 이것은 단순히 편의 기능입니다. 동작하는데 영향을 주지 않습니다.
2. 실행을 해보니 No DataSource specified 라는 오류가 발생합니다.
이 문제는 확인을 해보니 주신 코드에서 다음 부분에 문제가 있었습니다.
@Configuration
public class SpringConfig {
private DataSource dataSource; //주입을 안해서 null
@Bean
public MemberService memberService(){
return new MemberService(memberRepository());
}
@Bean
public MemberRepository memberRepository(){
//return new MemoryMemberRepository();
//여기에 dataSource가 없으므로 null 입력
return new JdbcMemberRepository(dataSource);
}
}
메뉴얼처럼 다음과 같이 생성자를 추가하도록 수정하면 됩니다^^
@Configuration
public class SpringConfig {
private DataSource dataSource;
public SpringConfig(DataSource dataSource) {
this.dataSource = dataSource;
}
스프링은 생성자가 딱 1개 있으면 여기에 의존관계를 주입해줍니다. 그러니까 스프링이 만든 DataSource가 입력되는 것이지요.
앞의 코드에는 생성자가 없어서 dataSource에 아무런 값을 넣지 못했습니다.
도움이 되셨길 바래요^^!
1
0
0
0
0
0
0





