Dev/Spring Boot 10

Swagger 란? 무엇인고?

🤔 Swagger 란? Swagger란 개발한 Rest API를 편리하게 문서화 해주고, 이를 통해서 관리 및 제 3의 사용자가 편리하게 API를 호출해보고 테스트 할 수 있는 프로젝트 이다. Spring Boot에서는 간단하게 springfox-boot-starter 를 gradle dependencies에 추가 함으로 사용할 수 있다. 다만, 주의할 점은 운영환경과 같은 외부에 노출되면 안되는 곳에서 사용할 땐 주의 해야 한다. 사용해보자. ✅ 디펜던시 설정 // https://mvnrepository.com/artifact/io.springfox/springfox-boot-starter implementation group: 'io.springfox', name: 'spring..

Dev/Spring Boot 2022.03.02

JUnit으로 테스트 하기2

Spring JUnit TEST 이전에 했던 계산기를 Spring에서 구현하여 API를 만들고 Test를 하는 과정이다. 여기에는 Test코드만 올리고 나중에 좀더 보충해야겠다.. @WebMvcTest(CalculatorApiController.class) @AutoConfigureWebMvc @Import({Calculator.class, DollarCalculator.class}) public class CalculatorApiControllerTest { @MockBean private MarketApi marketApi; @Autowired private MockMvc mockMvc; @BeforeEach public void init() { Mockito.when(marketApi.connect..

Dev/Spring Boot 2022.03.02

JUnit으로 테스트 하기1

JUnit TDD(Test-driven Development) 테스트 주도 개발에서 사용하지만, 코드의 유지 보수 및 운영 환경에서의 에러를 미리 방지 하기 위해서 단위 별로 검증 하는 테스트 프레임워크 단위테스트 작성한 코드가 기대하는 대로 동작을 하는지 검증하는 절차 JUnit Java기반의 단위 테스트를 위한 프레임워크 Annotation 기반으로 테스트를 지원하며,Assert를 통하여,(예상,실제)를 통해 검증 계산기로 실습해보자. @ExtendWith(MockitoExtension.class) public class DollarCalculatorTest { @Mock public MarketApi marketApi; @BeforeEach public void init(){ Mockito.leni..

Dev/Spring Boot 2022.03.02

스프링의 다양한 기능2(Filter, Interceptor)

Interceptor 😎🤔🦜 Interceptor 란 Filter 와 매우 유사한 형태로 존재 하지만, 차이점은 Spring Context에 등록 된다. AOP와 유사한 기능을 제공 할 수 있으며, 주로 인증단계를 처리하거나, Logging를 하는 데에 사용한다. 이를 선/후 처리 함으로써, Service business logic 과 분리 시킨다. 백문이불여일타 인증관리하는 인터셉터 만들어보자 session이나 쿠키를 사용해야하지만... 인터셉터 실습이기 때문에 필드값받아서 확인 @Auth @RestController @RequestMapping("/api/private") public class PrivateController { @GetMapping("/hello") public String hel..

Dev/Spring Boot 2022.03.02

스프링의 다양한 기능(Filter, Interceptor)

Filter-Interceptor 활용하기. 🔔😁🎅🤔 🤔🤔🤔Filter가 뭘까? Filter란 Web Application에서 관리되는 영역으로써 spring Boot 에서 Client로 부터 오는 요청/응답에 대해서 최초/최종 단계의 위치에 존재하며, 이를 통해서 요청/응답의 정보를 변경하거나,Spring에 의해서 데이터가 변환되기 전의 순수한 Client의 요청/응답 값을 확인 할 수 있다. 유일하게 ServletRequest,ServletResponse 의 객체를 변환 할 수 있다. 주로 request/response 의 Logging 용도로 활용하거나, 인증과 관련된 Logic들을 헤당 Fliter에서 처리 한다. 이를 선/후 처리 함으로써 Service business logic과 분리 시킨다...

Dev/Spring Boot 2022.03.02

스프링의 다양한 기능(Vaildation, Exception처리)

스프링의 기능을 활용해 보자. 😡😎 Spring Boot Validation validation은 정말 중요한 부분입니다. Java는 null값에 대해서 접근하려고 할 때 null pointer exception이 발생 함으로, 이러한 부분을 방지하기 위해서 미리 검증하는 과정을 Validation 이라고 합니다. 위와 같이 단순하게 validation하면 되지만, 객체가 많으면 굉장이 많은 코드를 써야한다. 정상적인 로직이 들어가야하는데 비즈니스에 상관없는 코드들이 많이 들어간다. 정리하면 검증해야 할 값이 많은 경우 코드의 길이가 길어 진다. 구현에 따라서 달라 질 수 있지만 Service Logic과의 분리가 필요하다. 흩어져 있는 경우 어디에서 검증을 하는지 알기 어려우며, 재사용의 한계가 있다...

Dev/Spring Boot 2022.03.02

스프링의 핵심

01. 스프링 조금 더 들여다 보기 Spring 🦜 2004년 출시 🦜 20년간 자바 엔터프라이즈 어플리케이션 개발의 최고의 자리 차지 🦜 스프링 프렘임워크의 구성은 20여가지로 구성 🦜 현재 단일 아키텍처(모놀리스)에서 마이크로서비스아키텍처로 변환 중 여기에 맞춰서 스프링도 진화 🦜 여러 가지 모듈이 있지만 그 중에서 단연 스프링 부트, 클라우드, 데이터, 배치, 시큐리티에 중점을 많이 둔다. 🦜 테스트의 용이성,느슨한 결합에 중점을 두고 개발 특징 삼각형 의존 관계 주입 관점 중심 프로그램 이식 가능한 추상화 IoC/DI 🦜IoC(Inversion Of Control) 스프링에서는 일반적인 자바 객체를 새로 생성하여 개발자가 관리 하는 것이 아닌 Spring Container에 모두 맡긴다. 즉, 개..

Dev/Spring Boot 2022.03.02

스프링부트 입문

필자는 이미 Spring의 기본은 알기 때문에 처음하거나 모르는 부분에 대해서만 필기하는 관계로 이 포스트를 보고 그대로 따라하면 안됩니다.IntelliJ로 Spring실행 😮 위 사진처럼 포트번호 변경 가능 😮 위 사진처럼 API를 프로젝트 별 Test 관리 가능 😎GET API 위의 표는 각 API요청들의 특성 😮 위 사진처럼 queryParam을 여러게 넣어서 사용 가능! 하지만 쿼리를 명시적으로 받고 싶으면 ? 😮 위와 같이 간단하게 표현 가능하다. 그럼 파라미터를 하나하나 다 설정 해줘야 할까? 아니다. 다음 방법을 보자. DTO 클래스를 만들고 😮 파라미터에 그 객체를 사용해주면 된다. WOW 😎POST API 위의 표는 각 API요청들의 특성 👍꿀팁 : 위와 같이 뜨면 alt+enter 누르..

Dev/Spring Boot 2022.03.02

REST Client 설치[Talend ApI Tester]

일반적인 홈페이지의 URI로 요청하는 방식은 GET 방식이다. 다른 요청을 보내고 Test 하려면 REST Client를 써야한다. Talend API Tester 추가 구글 크롬 웹 스토어 에서 talend API를 검색해서 확장프로그램 추가해 주자. 구글서버에 요청해 보자 아무거나 검색해(GET요청) 해서 나온 결과다. 코드안 못생긴 이유는 브라우져를 통해서 이쁜 코드로 된다. 위에서 배운 GET POST PUT DELETE를 할 수 있다.

Dev/Spring Boot 2022.03.02

SPRINGBOOT는 뭘까?

Spring Boot 👍단순, 프로덕션 제품 수준의 스프링 기반 어플리케이션을 쉽게 만들 수 있다. (프로덕션=실제 상품) 👍어플리케이션에는 Spring 구성이 거의 필요 하지 않다.(개꿀) 👍java -jar로 실행하는 Java 어플리케이션을 만들 수있다.(톰켓 내장) SpringBoot의 목표 👍Spring 개발에 대해 빠르고, 광범위하게 적용할 수 있는 환경 👍기본값 설정이 있지만 설정을 바꿀 수 있다. 👍대규모 프로젝트에 공통적인 비 기능 제공(보안, 모니터링 등등) 👍XML구성 요구사항이 전혀 없다.(어노테이션기반 @) 사용하는 Bulid Tool 👍Maven 👍Gradle(실습떄 사용) Servlet Contaniners 👍Tomcat이 기본 Jetty,Undertow,Netty 사용 핵심 👍..

Dev/Spring Boot 2022.03.02