티스토리 뷰

이제 본격적으로 User Service를 개발해 볼게요!

처음으로 할일은 프로젝트 생성입니다.

아래에 Spring Boot 프로젝트를 생성하주는 사이트가 있습니다. 

IntelliJ 프리미엄 버젼을 사용하면 바로 생성 할 수 있지만, 저는 커뮤니티 버젼이기 때문에

직접 생성을 해줬어요 😭

https://start.spring.io/

그리고 다음과 같이 셋팅을 한 뒤 생성을 통해서, 프로젝트를 받았습니다.

생성이 완료 된 후에 IntelliJ 로 해당 폴더를 열어보면 다음과 같은 구조로 생성이 완료 되신 것이 보일거에요.

저희가 수정해줘야할 UserserviceApplication도 있네요! 다음과 같이 수정을 해줄게요.

#UserserviceApplication

@SpringBootApplication
@EnableEurekaClient
public class UserserviceApplication {

   public static void main(String[] args) {
      SpringApplication.run(UserserviceApplication.class, args);
   }

}

해야할일은 단순해요! Client임을 명시만 해주면 되기 때문에 @EnableEurekaClient를 작성해주면 끝이에요.

그럼 이제 yml파일 수정을 통해서 포트를 지정하고, Client 지정을 위한 기본 셋팅을 진행할거에요.

#application.yml ( or .properties)

server:
   port: 0

spring:
   application:
      name: user-service

eureka:
   instance:
      instance-id: ${spring.application.name}:${spring.application.instance_id:${random.value}}
   client:
      register-with-eureka: true
      fetch-registry: true
      service-url:
         defaultZone: http://localhost:8761/eureka

 

그리고 Port를 0으로 줘서 자동으로 포트를 부여하도록 합니다. 다만 0번포트를 지정할때는 Instance도 설정해줘야 하는데, 이유는 다시 설명 드리면 여러개의 자동포트를 부여해도 0번포트로 인식하기 때문에, 분리를 위해서 Instance를 설정해줘야 해요.

자 이제 테스트를 위해서 Controller를 하나 생성해볼까요? 

저는 아래의 위치에 Controller를 생성했어요. 

controller 패키지를 생성 후 UserController를 하나 생성해줬지만, 간소화하고 싶다면 패키지 생성과정은 넘어가셔도 

구동에 문제는 없어요! 생성 후 해당 클래스에 아래와 같이 작성 해볼게요.

#UsersController.java

package com.example.userservice.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/")
public class UsersController {
    
    @GetMapping("/health_check")
    public String status(){
        return "It's Working in User Service";
    }
    
}

@RestController를 통해서 RestController임을 명시해주고, @RequestMapping을 통해서 해당 컨트롤러 접속에 필요한 

URL정보를 Mapping 해줬어요!. 마지막으로 GetMapping을 통해서 URL정보를 하나 더 Mapping 했습니다.

그럼 한번 실행을 해볼까요? 일단 기존에 만들어둔 Eureka 서버를 구동한 뒤, UserService도 구동해줍니다.

만약 Eureka 서버가 없다면 아래의 글을 참조해서 생성해주세요.

https://ggparkitbank.tistory.com/117

 

[MSA] Spring Cloud로 개발하는 MS 어플리케이션 ( Eureka )- 1-

Eureka에 대해서 짧게 알아보고 갈게요 Eureka는 저희가 MSA만들때 여러가지 Service를 개발하게 될거에요. 그리고 그 서비스들을 Load Balancer가 호출해야하는데 이걸 중앙에서 관리해주지 않으면 굉장

ggparkitbank.tistory.com

 

Localhost:8761 접속 시 아래와 같은 화면이 출력된다면 성공입니다.

 

잘 확인이 되나요? 그렇다면 따따봉입니다. :)

 

#User Service 고도화

자 그럼 기본적인 셋팅은 끝났으니 해당 서비스를 좀 더 고도화 해볼게요.

#application.yml

yml파일에서 greeting.message를 추가해줍니다. 해당 message의 위치는 임의로 어디든 생성해도 좋습니다.

server:
   port: 0

spring:
   application:
      name: user-service

greeting:
   message: Welcome to the Simple E-Commerce.
eureka:
   instance:
      instance-id: ${spring.application.name}:${spring.application.instance_id:${random.value}}
   client:
      register-with-eureka: true
      fetch-registry: true
      service-url:
         defaultZone: http://localhost:8761/eureka

#UsersController

컨트롤러에서는 Environment 객체를 추가해서 yml파일에 있는 greeting 항목을 가져 올 수 있도록 할게요.

아래에 보이시는 greeting.message가 저희가 yml파일에서 설정한 부분입니다!

package com.example.userservice.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/")
public class UsersController {

    private Environment env;

    @Autowired
    public UsersController(Environment env){
        this.env = env;
    }

    @GetMapping("/health_check")
    public String status(){
        return "It's Working in User Service";
    }
    @GetMapping("/welcome")
    public String welcome(){
        return env.getProperty("greeting.message");
    }
}

 

그럼 실제로 실행을 해볼까요? 저는 테스트를 위해서 Post-Man을 사용해볼게요.

 

#Test 01

여기서 잠깐 포트번호를 모르겠다면 콘솔창을 참조해도 되고, 아래와 같이 Eurekaserver에서 Status에 항목을 클릭해서

확인해도 됩니다.

UP(1)옆에 항목을 클릭하자
해당 URL에서 포트번호 확인!
혹은 콘솔창에서 확인!

 

http://localhost:포트번호/welcome으로 접속 시 다음과 같은 화면이 출력되시나요?

그렇다면 성공입니다! 정말 잘하셨어요 :)

이제 Database를 연동해볼까요? 사용할 DB로는 H2 Database를 사용할 예정입니다.

H2 Database는 자바로 작성된 오픈소스 RDBMS이기 떄문에 자바와의 연동률이 매우 높습니다. 

또한 JPA 연동도 가능해요.

#H2 Database

가장 먼저 해야하는 일은 H2 Database를 Dependencies에 추가해주는 일입니다.

저희가 만든 프로젝트는 Maven형식으로 제작되어 있기 때문에 pom.xml파일에 다음과 같은 Dependency를 

추가할게요.

#pom.xml

		<dependency>
			<groupId>com.h2database</groupId>
			<artifactId>h2</artifactId>
			<version>1.3.176</version>
			<scope>runtime</scope>
		</dependency>

버젼은 여러개가 있지만, 가장 대중적으로 사용되는 1.3.176버젼을 사용했어요. 1.4.198 이후로는 자동으로 데이터 베이스를 생성하지 않아서 직접 생성을 해줘야해요. 이런 과정을 생략하고 빠르게 넘어가기 위해서 1.3.176버젼을 사용한 것도 이유가 있습니다. 

#application.yml 

server:
   port: 0

spring:
   application:
      name: user-service
   h2:
      console:
         enabled: true
         settings:
            web-allow-others: true
         path: /h2-console
     
 ... ( 생략 )

위 와 같이 셋팅을 해주면 H2 DB에 대해서 접속하기 위한 준비는 끝났습니다. 정말로요!

h2장점은 간단한 셋팅만으로 DB를 사용 할 수 있게 도와주는 점 입니다. 

셋팅을 간략하게 살펴보면 h2.console.enabled를 통해서 DB에 접근이 가능할 지에 대한 여부를 설정해줍니다. 

해당 항목이 False면 쿼리문이나 조회가 쉽지 않아질거에요.. :( 그리고 Path를 통해서 실제 경로를 정의해줍니다.

 

그럼 실제로 어플리케이션을 실행시켜서 잘 접속되는지 확인해 볼까요? 

접속방법은 간단합니다. 

localhost:포트번호/h2-console 로 접속해봅시다. 

다음과 같은 화면이 출력되시나요?

그렇다면 성공입니다! 

따따봉

그럼 이제 Controller와 클라이언트 등록 DB연동까지 기본적인 셋팅은 모두 마무리 됐습니다. 그럼 다음 포스팅부터는

정말 본격적으로 UserService를 개발해보도록 하겠습니다. 감사합니다. 

 

* 해당 포스팅은 아래의 강의를 참고해서 제작되었습니다. 정말 좋은 강의 같으니, 관심 있으신 분들은 한번 수강하시는   걸 추천 드립니다. 

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%81%B4%EB%9D%BC%EC%9A%B0%EB%93%9C-%EB%A7%88%EC%9D%B4%ED%81%AC%EB%A1%9C%EC%84%9C%EB%B9%84%EC%8A%A4/dashboard

 

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA) - 인프런 | 강의

Spring framework의 Spring Cloud 제품군을 이용하여 마이크로서비스 애플리케이션을 개발해 보는 과정입니다. Cloud Native Application으로써의 Spring Cloud를 어떻게 사용하는지, 구성을 어떻게 하는지에 대해

www.inflearn.com

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함