대머리개발자

[코틀린] 스프링 DI 본문

개발이야기/코틀린

[코틀린] 스프링 DI

대머리개발자 2023. 4. 21. 13:53
728x90

시작할때 부터 큰 그림을 그려서 설계서대로 하면 Best인듯 하지만

 

나는 바보 천치라 애자일스럽게...변덕스럽게게

 

클래스마다 필요 서비스를 주입하는 형태는 하드 코딩이다. 우리 고급인력이자나.

 

미리 주입해 놓고 가져다 쓰는 구조로 이용한다면 여러면에서 장점만 보인다.

 

1. 보일러 플레이트가 안 보일것이다. (여러 위치에서 서비스를 이용하기 위한 주입 코드 사라짐)

2. 유지보수 보다 쉽다.

 

해서 자바 플젝 할때도...서비스 Util에 모아 놓고 각 비지니스 로직에서 바로 호출 하는 구조로 사용했다.

즉, 미리 주입해놓은 친구를 가져다 쓰는 형태이다.

@Component
public class ServiceUtil {

    private static BaseService baseService;
    public static BaseService getBaseService() {
        return baseService;
    }
    @Autowired
    public void setBaseService(BaseService baseService) {
        ServiceUtil.baseService = baseService;
    }


    private static ExtraInfoService additionalService;
    public static ExtraInfoService getAdditionalService() {
        return additionalService;
    }
    @Autowired
    public  void setAdditionalService(ExtraInfoService additionalService) {
        ServiceUtil.additionalService = additionalService;
    }
    ...
 }

 

고대로 갓틀린으로 옮겨보자... God틀린!!

 


아.. 개틀린 어렵네..... ...하루 종일 삽질 끝에.. 굿 럭s

 

@RestController
class BoardEndPoint {

    @GetMapping("/board/{boardID}")
    fun getBoard(@PathVariable("boardID") boardID:Long): BoardDto? {
      return ServiceUtils.getBoardService().get(boardID)
    }

    @PostMapping("/boards")
    fun searchBoard(@RequestBody searchInfo: SearchInfo): MutableList<Board>?  {
        return ServiceUtils.getBoardService().search(searchInfo)
    }

    @PostMapping("/board")
    fun createBoard(@RequestBody boardDto:BoardDto): BoardDto? {
        return ServiceUtils.getBoardService().create(boardDto)
    }

    @DeleteMapping("/board/{boardID}")
    fun createBoard(@PathVariable("boardID") boardID:Long){
        ServiceUtils.getBoardService().delete(boardID);
    }
}

 

깔끔스 하게..  compaion object{ } 과 init{ }이용해서

 

init {
      ..
}

companion object{
..
}

 

728x90

'개발이야기 > 코틀린' 카테고리의 다른 글

[코틀린] 스프링 배치(2) - 적용  (0) 2023.09.04
[코틀린] 스프링 배치(1) - 사전 주저리  (0) 2023.09.01
[코틀린] queryDSL  (1) 2023.06.13
[코틀린] NULL 처리  (0) 2023.05.16
코틀린 + Spring + JPA  (0) 2023.04.17