반응형 spring boot18 [Spring] SpringBoot log4j 라이브러리 바꾸다 삽질한일. log4j 취약점 사태에 따라서 프로젝트에 log4j 라이브러리를 변경해야 했다. 실제 프로젝트에서는 logback 을 사용중이었고 boot 버전은 2.2.4를 사용하고 있었고 spring-boot-starter-logging 을 사용중이었다. 이 라이브러리의 dependency 는 아래와 같다. ch.qos.logback » logback-classic 1.2.3 org.apache.logging.log4j » log4j-to-slf4j 2.12.1 org.slf4j » jul-to-slf4j 1.7.30 출처 : https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-logging/2.2.4.RELEASE 1. s.. 2021. 12. 14. Spring Boot Test Case 작성에 대한 생각 - Controller Test 2021/02/17 - [Development/Java] - Spring Boot Test Case 작성에 대한 생각 - Service Test 2021/02/17 - [Development/Java] - Spring Boot Test Case 작성에 대한 생각 - Repository Test Repository, Service 에 대한 테스트를 살펴봤으니 이제 Controller 테스트를 확인해보자. Controller Test 에는 @WebMvcTest 를 사용했다. Controller 는 확인해야 할 부분이 다음과 같다. 1. request 를 요청한 url 과 파라메터가 정확한지 여부. 2. 정상 처리 되었을데 요구한 응답을 보내주는지. 3. 비정상일때에 response 에 상태 코드가 정확히 전.. 2021. 2. 18. Spring Boot Test Case 작성에 대한 생각 - Service Test 2021/02/17 - [Development/Java] - Spring Boot Test Case 작성에 대한 생각 - Repository Test 지난 글에 이어 이번에는 Service 테스트에 대해서 적어보려 한다. 아래는 내가 작성한 UserService 에 대한 테스트케이스 이다. @RunWith(MockitoJUnitRunner.class) public class UserServiceTest { private UserService userService; @Mock private UserRepository userRepository; private Users user1; @Before public void setup(){ userService = new UserService(userReposit.. 2021. 2. 17. Spring Boot Test Case 작성에 대한 생각 - Repository Test 테스트 케이스를 작성을 할때 내가 어렵게 생각했던것은 2가지 이다. 1. Mock 으로 테스트케이스를 작성할 것인가? 아니면 실제 데이터를 가지고 작성할 것인다. 2. 테스트용 DB를 따로 둬야 할까? 이 2가지가 항상 풀리지 않는 난제 같았다. 그런데 갑자기 뭔가 기준을 정해서 하면 되지 않을까 라는 생각이 들었다. 어떻게 보면 당연한 이야기 이긴 하지만. 테스트케이스를 작성하려는 클래스들의 역할에 생각해 보고 그에 맞는 테스트 케이스를 작성하면 되는 것이다. Spring Boot 프로젝트를 보면 테스트케이스를 작성하는 클래스들로 다음과 같은 것들을 꼽을 수 있다. 1. Repository 2. Service 3. Controller 4. RestApiController 그럼 우선 이번 글에서는 Rep.. 2021. 2. 17. Spring Boot Data Jpa 를 사용한 Paging. Spring Data Jpa 를 사용하게 되면서 전에 쓰지 않았던 paging 기능에 대해서 이야기 해보려 한다. Domain 을 조회하는 Repository interface를 만들때에 JpaRepository 를 상속해서 사용하는 경우가 많다. 이 JpaRepository 를 살펴보면 내부에 이렇게 구현이 되어있다. public interface JpaRepository extends PagingAndSortingRepository, QueryByExampleExecutor { ..... } 그리고 다시 PagingAndSortingRepository 를 살펴보면 다음과 같다. public interface PagingAndSortingRepository extends CrudRepository { .. 2019. 11. 11. Docker build 할때 parameter 처리 방법 Spring boot Application 을 Dockerfile 로 build 할 때에 profile 값을 전달 해야해서 찾아본 것을 적어보았다. profile 값을 전달하기 위해서는 다음과 같은 방법들이 있다. 1.Dockerfile 에 profile 값을 넣고 build 를 한다. FROM java:8 ADD target/app.jar app.jar RUN bash -c 'touch /app.jar' ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom","-Dspring.profiles.active=dev","-jar","/app.jar"] 2.Docker run 할때 환경 변수로 전달한다. docker run -d -p 8080:8080 -.. 2019. 8. 1. Spring Boot Controller Test 하다가 마주친 IllegalArgumentException 컨트롤러를 만들어서 Testcase 를 작성한 후에 성공할거라 믿고 돌려봤는데 IllegalArgumentException 이 발생했다.컨트롤러 코드와 테스트 케이스 코드는 각각 다음과 같다. UserController.java123456@GetMapping(value = "/users/{email}")public UserDto.Res getUser(@PathVariable @Valid final String email){ Optional users = userService.findByEmailValue(email); return new UserDto.Res(users.get());}Colored by Color Scriptercs UserControllerTest.java12345678910111213.. 2019. 3. 7. [길벗 개발자 리뷰어] 스프링 마이크로서비스 코딩 공작소 요즘에 한참 클라우드 관련 내용들을 공부하고 도커, 쿠버네티스 에 대한 내용을 보다보니 마이크로 서비스에 대한 내용들을 자주 접하게 되었다. 컨테이너를 사용한 환경에서 어플리케이션을 배포하고 관리 하려면 아무래도 덩치가 큰것 보다는 좀더 작게 모듈화 해서 배포 하는것이 나을 것이다. 어플리케이션의 크기가 작아진다는 것은 간단히 생각해봐도 배포시간이 줄어들고 그렇게 되면 다운 타임 또한 줄어들게 된다. (물론 배포 전략에 따라서 이런 부분들은 없도록 하는게 맞다.) 그래서 나 또한 마이크로 서비스에 대해서 다시 관심을 갖게 되었고 이것저것 책을 찾아보고 읽어보고 있었다. 전부터 관심이 있어서 한번 읽어봐야겠다고 생각은 하고 있었는데 길벗 개발자 리뷰어에 선정되어서 이렇게 책을 접할수 있게 되었다. (베타리.. 2019. 2. 27. SpringOne Tour 참석 후기 지난번 Google Summit 에 이어 이번에는 피보탈에서 주최하는 SpringOne Tour 세미나에 참석을 했다. https://springonetour.io/2018/seoul 우연히 Facebook 타임라인에 뜬 세미나 일정과 Agenda 를 보고 신청을 했었다. Spring 관련 세미나라서 내용에 대한 기대가 컸다. 세미나의 전체적인 주제는 Reactive 와 Cloud 관련 내용들이 많이 있었다. 회사에서 많이 쓰지는 않는 내용들이었지만 그래도 공부하면서 봤었던 유투브에서 봤던 내용들이어서 어느정도 이해할 수 있었다. 그리고 대부분 라이브 코딩이 포함되어 있어서 오히려 더 도움이 됐다. 세션 요약1. Reactive Spring with Spring Boot 2.0 - Mark Heckler.. 2018. 11. 8. [SpringBoot] Properties 우선순위 Spring Boot 에서 Properties 를 설정하는 방법에 대해서 알아보자. 우선 Properties 파일을 3개를 만들어 보았다.src/main/resources 하위에 application.properties, application-server1.properties, application-server2.properties 이렇게 3개의 파일을 만들었다. application.properties1234application-name: my applicatoinspring.output.ansi.enabled=alwayslogging.level.org.springframework.web=debugserver.port=9000cs application-server1.properties1server.po.. 2018. 6. 7. [SpringBoot] @Mock, @MockBean 차이가 뭘까? 테스트 케이스를 작성하다가 좀 헷갈리는게 있었다. @Mock, @MockBean 차이가 뭐지??? 쓰긴 하고 있는데 알고 써야 하지 않을까라는 의문이 들었다. 그래서 찾아봤다. 먼저 Mock 객체를 선언할 때에는 2가지 방법이 있다. 1. 첫번째 : mock() 을 이용해서 선언 1 2 3 4 5 6 7 8 9 10 11 12 @RunWith(MockitoJUnitRunner.class) public class UserServiceTest { @InjectMocks private UserService userService; UserRepository userRepository = mock(UserRepository.class); @Test public void findByEmail_test(){ when.. 2018. 4. 10. [SpringBoot]Spring Boot Oauth login With Facebook 삽질기!!! https://spring.io/guides/tutorials/spring-boot-oauth2/ 위 사이트에 가면 Spring boot 를 이용해서 Oauth를 이용해서 Login 을 할 수 있는 샘플을 만들어볼 수 있다. 그래서 나도 해봤는데.. 그게 삽질의 시작이었다...Tutorial 자체는 그렇게 어렵지 않게 따라 할 수 있다. 따라하기가 어렵다면 Git에서 소스를 내려 받아서 해볼 수도 있다. 이제 이 Tutorial 을 진행하기 위해서 Facebook Developer 사이트에서 앱을 등록을 해야 한다. 그래야 Client Id 하고 Client Secret을 받을 수 있다. https://developers.facebook.com 위 사이트에 들어 가면 본인의 Facebook 계정으로 앱을.. 2018. 3. 4. 이전 1 2 다음 728x90 반응형