Smilegate-WWW / wow-welcome-webtoon

🚀 Smilegate Online Server Dev Camp 1st : Team "WWW" / SpringBoot, JPA, Mysql, Redis, Nginx, React
3 stars 1 forks source link

프로젝트 구조 변경(core module 추가)에 따른 작업 순서 #27

Open mojh7 opened 4 years ago

mojh7 commented 4 years ago

  1. gradle dependencies내의 compile project(':backend:core') 추가

  2. 기존에 쓰던 entity, repository 삭제하고 entity, repository import core 모듈로 변경(entity, repository만 복사 붙여넣기로 옮겼고, 내용 맞는지 확인)

  3. 각 메인 클래스(XXXAplication.Java file)위에 어노테이션 변경 기존의 @EnableJpaAuditing랑 SpringBootApplication 지우고 아래 3줄로 변경

    @EntityScan(basePackages = "com.www.core")
    @EnableJpaRepositories(basePackages = "com.www.core")
    @SpringBootApplication(scanBasePackages = "com.www.core")

    [!!] @ EnableJpaAuditing 지우면 @ created_date 작동 안합니다 [!!] @ SpringBootApplication 뒤에 파라미터 추가할 경우 정상적으로 api 호출이 안됩니다 (2020.02.16 ji-water 수정 ↓) 확인 후 수정 부탁드립니다!

    @EntityScan(basePackages = "com.www.core")
    @EnableJpaRepositories(basePackages = "com.www.core")
    @EnableJpaAuditing
    @SpringBootApplication

2020.02.23 momojh94 수정 scanBasePackages "com.www.core"로 작성했을 때

  • platform(scanBasePackages 적은 패키지) 프로젝트에서 컨트롤러에 적은 url이 맵핑을 못하는 에러 생김, "com.www"로 작성하니 platform에 있는 url스캔이 됩니다.
  • TokenCheker 클래스 처럼 타 모듈(core)에 있던 클래스에 주입될 마땅한 bean을 찾지 못해서 생겼던 에러가 core에 있는 component가 스캔이 되고나서 해결 되었습니다. 아래 코드 처럼해도 작동 됨.
    
    @RestController
    @AllArgsConstructor
    public class StarRatingController {
private EpisodeService episodeService;
private StarRatingService starRatingService;
private TokenChecker tokenChecker;
> 결국 아래 처럼 3줄 작성하면 되고 core @EnableJpaAuditing는 그대로 사용하면 created_date 작동 됩니다.

@SpringBootApplication(scanBasePackages = "com.www") @EntityScan(basePackages = "com.www.core") @EnableJpaRepositories(basePackages = "com.www.core")



---

4. dto는 타 모듈에서도 써야되거나 공동으로 쓰는 것들만 core에 옮겨서 써보고
각자 쓰는 것들은 각자 모듈에서 사용(해보다가 모든 dto다 core 모듈에 놓는 걸로 바꿀수도 있음)

5. 원래는 core 모듈의 application.yml안에 mysql db 설정 내용쓰고 다른 모듈에서는 core 모듈의 내용이 있으니 설정을 따로 안한다거나(mysql db 설정 core 환경설정으로 통일하려고), application.yml 내용을 참조해서 적용해보려고 했는데 잘 안되서 일단은 각 모듈의 application.yml에 기존처럼 db 환경설정 작성하고 실행해주세요. 
ji-water commented 4 years ago

https://woowabros.github.io/study/2019/07/01/multi-module.html