.시작하기 전에쇼핑몰 개발을 위해 Spring Boot 프로젝트 빌드와 Mysql DB세팅까지 마무리 했다. Show .Gradle Dependencies Configuration일단 DB연결을 하려면 Mysql Driver를 사용해야한다. api : 런타임과 컴파일 공식문서를 찾아보니 이외에 compileOnlyApi나 test가 붙은 옵션도 많이 있다. (https://docs.gradle.org/current/userguide/java_library_plugin.html#java_library_plugin) api는 결국 implementation 아래에 있다는 것이다. .Gradle Mysql Driver결국 Mysql Connector는 런타임중에만 사용되기때문에 runtimeOnly가 적합한 옵션이라는 것을 알았으니 이제 gradle을 수정하여 사용해보자
런타임시에 Mysql Connector를 사용하기 위해 runtimeOnly로
종속성을 설정해줬다. .application.properties 설정DB에 붙기위해 정보를 입력해야한다.
이렇게 하면 연결을 위한 설정은 전부 마쳤다. .UserEntityController, Service, Repository 어노테이션을 사용하는 구조로 DB연결 테스트겸 회원가입 API를 만들고자 한다.
실제로 사용할 앱이기때문에 원래소스보다 짧게 표현했다. @Data :
Getter/Setter를 생략시켜주는 Lombok라이브러리 (https://projectlombok.org/features/Data) 이런 어노테이션이다. .UserRepository다음은 DB와 직접 접근해서 쿼리를 처리하는 Repository를 생성 해야한다.
되게 비어보여서 코드를 작성하다 만것처럼 보이지만 간단한 crud는 쿼리없이 가능하다. .UserService, UserController공식문서에는 Controller에서 Repository로 직접 접근하는 모습을 보여준다. Controller는 클라이언트에게 요청을 받아 가공하여 Service한테 DB와의 접근을 요청을 한다. 개인적으로 클라이언트와 접근하는 로직과 DB와 접근하는 로직이 분리되어있어서 가독성에 매우 좋다고 생각한다.
Service에게는 UserEntity객체를 Repository에게 insert(repository.save)를 요청하고, Controller는 Service에게 UserEntity객체를 빌드해 주었다. @Service : Service Bean을 선언 과거 Spring Legacy에서는 일일히 Bean을 등록하여 사용하는 번거로움이 있었다고 한다. .API 테스트현재 프론트 개발이 진행이 더딘상황이어서 바로 React 프로젝트에 붙힐수는 없을것같다. @RequestMapping과 @PostMapping으로 선언한 대로 /users/signup으로 UserEntity에 넣을값을 body에 json으로 넣어주니 로직이 정상적으로 동작했다. |