스프링/6. 스프링 DB-2

8. 구현한 Jdbc로 갈아 끼우기.

sdafdq 2023. 10. 8. 16:47

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

이제 이러면 저거 읽고 데이터소스 자동으로 생성해서 빈으로 등록할 때, 저 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