Config를 만듦.
@Configuration
@RequiredArgsConstructor
public class JdbcTemplateV1Config {
private final DataSource dataSource;
@Bean
public ItemService itemService(){
return new ItemServiceV1(itemRepository());
}
@Bean
public ItemRepository itemRepository(){
return new JdbcTemplateItemRepositoryV1(dataSource);
}
}
그 Config를 갈아끼움.
//@Import(MemoryConfig.class)
@Import(JdbcTemplateV1Config.class)
@SpringBootApplication(scanBasePackages = "hello.itemservice.web")
public class ItemServiceApplication {
public static void main(String[] args) {
SpringApplication.run(ItemServiceApplication.class, args);
}
@Bean
@Profile("local")
public TestDataInit testDataInit(ItemRepository itemRepository) {
return new TestDataInit(itemRepository);
}
}
참고로 DataSource는 스프링이 기본으로 넣어줌.
근데 설정해 줘야 할 게 있음.
application.properties에 dataSource에 대홰 설정을 해 줘야 함.
spring.datasource.url=jdbc:h2:tcp://localhost/./test
spring.datasource.username=sa
spring.datasource.password=1234
spring.datasource.username=sa
spring.datasource.password=1234
이제 이러면 저거 읽고 데이터소스 자동으로 생성해서 빈으로 등록할 때, 저 url, username, password 로 dataSource 생성함.
url 감지해서 알아서 db 종류에 맞는 dataSource 가져 옴.
현재까지
도메인 만들고
리포지토리 만들고
서비스 만들고
컨트롤러 만들고
Service, Repository는 갈아끼우기 위해
본격적으로 스프링을 실행하는
@SpringBootApplication이 붙은 클래스의 자동 컴포넌트스캔범위(scanBasePackages) 를 컨트롤러까지만 제한해 두고,
@Import() 해서 여기 안에다가 어떤 서비스, 리포지토리 쓸건지 빈으로 등록함.
Service는 @Service 붙이고, Repository는 @Repository 붙여서 그렇게 서비스, 리포지토리로 인식함.
근데 선생님이 빼먹고 Repository에 @Repository 안붙였나 봄.
하긴 그래도 우리가 처음에 컨트롤러에 요청 들어오면 뭘 호출할 지 다 해놔서 상관이 없긴 할 듯.
'스프링 > 6. 스프링 DB-2' 카테고리의 다른 글
10. 이름지정 파라미터2 (0) | 2023.10.08 |
---|---|
9. 이름지정 파라미터 (0) | 2023.10.08 |
7. Jdbc 템플릿 + h2를 리포지토리 구현체로 (0) | 2023.10.08 |
6. Jdbc 템플릿 (0) | 2023.10.08 |
5. DB생성 (0) | 2023.10.08 |