JAVA/Spring
-
Spring Boot [02.Spring Resource와 SpEL]JAVA/Spring 2022. 1. 18. 20:14
1. Spring Resource java.net.URL의 한계(classpath 내부 접근이나 상대경로 등)를 넘어서기 위해 스프링에서 추가로 구현됨 업무에서 많이 사용되는 부분이 아닐수도 있으나, 스프링의 내부 동작을 이해하기 위해서 필요한 부분 Resource Interface와 그 구현체들 public interface Resource extends InputStreamSource { boolean exists(); boolean isReadable(); boolean isOpen(); boolean isFile(); URL getURL() throws IOException; URI getURI() throws IOException; File getFile() throws IOException; ..
-
Spring Boot [01. About Spring Boot]JAVA/Spring 2022. 1. 6. 19:11
1. Java, Spring, Spring Boot Java : 객체지향적 프로그래밍 언어 스프링의 근간이 되는 언어 스프링은 자바뿐만이 아니라 코틀린, 그루비로도 사용할 수 있음. 그러나 스프링 자체가 대부분 자바로 만들어져 있기에 (98.5%) 보통 자바를 사용함 Spring : 기업용 어플리케이션을 만드는데 사용 가능한 오픈소스 프레임워크 자바(한글)를 이용해서 어플리케이션(책)을 만들기 위해 활용하는 프레임워크 (여러 틀이 담겨져 있는 템플릿) -> 어플리케이션을 만들기 위해 필요한 틀을 제공! 자바로 기업용 웹 어플리케이션을 만들기 시작하며 다양한 프레임워크가 나왔지만 다루기 어렵다는 단점이 존재했음 -> 자바는 더 이상 쓰기 어려운 언어다, 망했다 라는 이야기가 나올 정도 이러한 단점을 해소하..
-
패스트캠퍼스 챌린지 19일차JAVA/Spring 2021. 11. 19. 23:24
Service 테스트 저번 시간에 했던 Controller 테스트에 이어서 이번 시간에는 Service 테스트를 진행한다. 이전에 JUnit과 Mockito에 대한 간략한 학습을 하며 만들 었던 DMakerServiceTest 파일을 열어주고 안에 새로운 test 메서드를 만들어준다. dmaker.service.DMakerServiceTest @Test void createDeveloperTest_success() { //given // Mocking 등 테스트에 활용될 지역변수들을 생성 //when // 테스트하고자 하는 동작 및 그 결과값을 받아오는 부분 //then // 우리가 예상한 부분들이 알맞게 동작하는지 검증하는 부분 } 위의 코드를 보면 Comment를 작성하여 테스트를 구조화한 것을 확인..
-
패스트캠퍼스 챌린지 18일차JAVA/Spring 2021. 11. 18. 20:56
Controller 테스트 작성 JUnit과 Mockito에 대한 알아봤던 때와 같이 DMakerController 파일을 열고 Ctrl + Shift + T를 눌러 새로운 Test를 만들어준다. dmaker.controller.DMakerControllerTest @WebMvcTest(DMakerController.class) class DMakerControllerTest { } @WebMvcTest는 Mockito와 유사한 면이 있는데 Controller쪽의 Bean들만 붙여서 테스트를 진행할 시 Controller까지 접근하기 위한 경로를 명시하는 등의 과정을 생략할 수 있기 때문에 편리하다. 어노테이션의 옵션에 넣어준 Controller를 붙여준다. @WebMvcTest(DMakerControl..
-
패스트캠퍼스 챌린지 17일차JAVA/Spring 2021. 11. 17. 23:55
JUnit & Mockito JUnit Java의 유닛 테스트를 하기 위한 프레임워크이다. JUnit4까지는 유닛 테스트를 진행하기에 어려움이 많았으나 최근 JUnit5로 업데이트되며 이전에 존재했던 여러 불편한 점들이 개선되었다. Spring Boot에서도 JUnit4는 사라지고 JUnit5가 기본적으로 제공되고 있다. Spring Boot에 기본적으로 JUnit5가 제공되고 있기에 테스트 파일을 생성하는 방법도 굉장히 간단하다. 먼저, 테스트할 클래스 파일을 연 뒤 Ctrl + Shift + T를 누르면 아래와 같이 Create New Test 옵션이 뜬다. 'Create New Test' 버튼을 눌러주면 아래와 같이 테스트 이름을 정하고 파일 경로를 설정할 수 있다. 그 후 OK 버튼을 눌러주면 테..
-
패스트캠퍼스 챌린지 16일차JAVA/Spring 2021. 11. 16. 23:42
1. 테스트를 잘 하는 방법 기존의 테스트 방식 테스트는 모두 사람이 하는 것이었고, 한번의 테스트는 상당한 노동력을 필요로 했음 SI에서는 전용 테스트 팀이 따로 있었고, 인수인계 전에 인수 테스트라는 것을 진행하여 기능적인 테스트를 꼼꼼히 진행했음 그 후에 불어온 테스트의 바람 하지만 로직이 대부분 쿼리에 있는 mybatis에서는 테스트하기가 까다로웠음 그 후 시간이 지나 JPA를 하게 되고, 쿼리가 아닌 자바 코드에 로직이 많이 담기게 됨 - 유지보수성의 극적인 향상(쿼리로는 다형성이나 디자인패턴 전략 등을 하기 어렵거나 불가능) - 자바 코드에 담긴 로직은 쿼리에 담긴 로직에 비해 테스트하기가 상대적으로 편리함 TDD & 실무 클래스의 구성이나 프로그램 구조가 잡히지 않은 상태에서는 테스트를 먼저..
-
패스트캠퍼스 챌린지 15일차JAVA/Spring 2021. 11. 15. 23:32
1. 예외처리를 활용한 서비스 로직 리팩토링 비효율적으로 코드를 짤 경우 불필요하고도 연이은 유효성 검사가 나타나는 모습을 볼 수 있다. 물론 때에 따라서 try catch를 통한 예외 처리는 필수적이지만 더욱 간단하고 효율적으로 해결할 수 있는 방안이 있는 상황에서 굳이 가독성이 떨어지는 코딩을 할 필요는 없을 것이다. 오늘은 비효율적인 코딩의 예시를 함께 살펴본 뒤, 효율적인 코드로 리팩토링하는 방법을 알아본다. 우선 Validation에 대한 결과로 뭔가를 return하려고 할 때 볼 수 있는 모습이다. dmaker.service.DMakerService public DeveloperVaildationDto validateCreateDeveloperRequest(CreateDeveloper.Reqe..
-
패스트캠퍼스 챌린지 14일차JAVA/Spring 2021. 11. 14. 23:59
1. 예외처리를 제대로 안했을 때의 문제점 지난 시간에 예외 처리를 했던 방법으로는 각각의 Controller에 Exception 처리를 해주어야하기 때문에 Controller가 많아질 경우 너무 많은 Exception 처리를 삽입해야 한다는 문제점이 있다. 이를 해소하기 위해 글로벌 단위로 예외 처리를 해주는 방법을 학습한다. 우선 각각의 Controller에 예외 처리에 대한 '조언'을 해주는 DMakerExceptionHandler를 만들어준다. dmaker.exception.DMakerExceptionHandler @Slf4j // @RestControllerAdvice 어노테이션을 달아줌으로써 전체 Controller에 Exception 처리를 // 적용할 수 있다. @RestController..