반응형

스프링

    리액티브 마이크로 서비스 정리

    동일한 마이크로서비스는 서로 공유 및 통신하게 되어있다. 예를 들면 주문과 결재, 배송서비스들은 서로 공유되어있다. 이 서비스들의 호출 관계를 단순하게 동기 방식으로 호출하게 된다면 강한 의존성을 가지게 되기 때문에 마이크로 서비스의 강점을 충분하게 살릴 수 없다. 결국 모노토릭 서비스와 크게 다를게 없어진다. 그래서 도입되는 개념이 리액티브 마이크로 서비스이다. 리액티브 프로그래밍은 회복성(resilient), 응답성(responsive), 메시지 기반(message driven), 탄력성(elastic) 이렇게 4가지 기둥이 존재한다. 서로간에 마이크로서비스가 독립적으로 되어있기 때문에 특정 부분에 문제가 발생하면 해당 마이크로서비스의 복제본이 이를 대체할 수 있다. 하지만 이렇게 격리가 되었다고 해..

    Spring boot hibernate jpa에서 Auditing 사용 - update, create 시간 자동 변경

    엔티티를 만들고 데이터를 삽입하고 조작할 때 create date와 last modified date를 별도로 업데이트 해주면서 관리하였다. 하지만 이번에 JPA를 공부하면서 별도의 작업 없이 JPA의 Auditing 기능을 사용하면 데이터를 삽입하고 수정할 때 자동으로 날짜를 수정하도록 할 수 있는 기능이 있는 것을 확인했다. 1. ConfigurationJPA Auditing을 사용하기 위해서는 기능을 자동으로 활성화 해주는 어노테이션을 붙혀주면 된다. 처음에는 @Configuration을 사용하는 클래스에 함께 선언해주었는데 정상적으로 적용이 되지 않아서 @SpringBootApplication을 사용하는 곳에 적용했더니 성공적으로 적용되었다. 123456789101112131415161718192..

    Spring Application Test 정리

    Spring에서 Junit을 통해 테스트하는데 익숙해져있다. 이 방식과 더불어서 Spring의 MockMvc를 이용하여 Web Layer를 테스트 하는 방법에 대해 공부해보자. 우선 테스트를 진행하기 위해서 Spring-boot-starter-test를 추가해야한다. Gradle1testCompile("org.springframework.boot:spring-boot-starter-test")cs 그러면 테스트 클래스 파일에 @SpringBootTest와 @RunWith가 추가된다. @SpringBootTest는 Spring Boot에서 주 구성 클래스를 찾아서 Spring Application Context를 시작하도록 하는 어노테이션이다. Controller 테스트를 진행할 떄 서버를 가동시키고 Te..

    Java 9 이후 deprecated된 Spring @PostConstruct와 @PreDestory 대안소개

    이 둘은 Bean의 생성 (생성자가 호출 된 후)과 소멸 시점에서 실행할 부분을 정의할때 사용한다. 하지만 @PostConstruct와 @PreDestory 어노테이션은 Java 9에서 Deprecated 되었고 Java 11에서는 제거될 예정이다. 그래서 이와 같은 동작이 필요할 때 사용할 수 있는 대안을 소개한다. InitializingBean, DisposableBean 인터페이스 구현 두 개의 인터페이스를 구현하면서 afterPropertiesSet()과 destroy() 메서드를 재정의하면서 deprecated된 두개의 어노테이션을 대신할 수 있다. 123456789101112131415161718192021@Servicepublic class UserService implements UserS..

    Spring Boot에서 src/main/resource 파일 접근 방법 및 주의사항.

    Spring Boot를 이용해서 빠르게 프로젝트를 제작해야 할일이 있어서 작업을 하던 도중에 src/main/resource 위치에 파일에 접근이 필요했다. 그래서 ClassLoader를 사용해서 resource를 획득한 후 해당 경로를 얻어 Paths 객체를 만들고 파일을 읽었다. 로컬에서 개발할 때는 정상적으로 읽어졌다. 1String jsonTxt = new String(Files.readAllBytes(Paths.get(getClass().getClassLoader().getResource("course.txt").toURI())));cs 하지만 war로 빌드하고 서버에 올리고 나서 문제가 발생했다. 해당 파일 자체를 읽지를 못했다. 왜그럴까? 한참 고민하다가 인터넷 검색해서 한가지 글을 보았다...

    Mybatis에서 쿼리 작성 시 부등호 사용하면 발생하는 Error 수정

    Mybatis에서 사용하는 쿼리중에 와 같은 부등호가 들어가게 되면 에러가 발생한다. [에러내용]"The content of elements must consist of well-formed character data or markup." 이를 해결하기 위해서는 부등호를 사용하는 쿼리는 을 감싸주어야 한다. 12345678910

    Spring에서 get으로 한글 데이터를 requestparam으로 받을 때 깨지는 현상

    업무 진행 시 Spring에서 페이지 이동 시 같이 전송한 parameter 값을 controller에서 받을 때 깨지는 현상이 발생했다. 그래서 이를 해결하기위해 전송받은 데이터를 UTF-8로 인코딩을 진행하였더니 정상적으로 한글을 받아서 처리할 수 있었다. 1new String(bizName.getBytes("8859_1"), "UTF-8")cs

    lombok 사용시 Generating equals/hashCode implementation 에러 수정방법

    lombok 사용할 때 다음과 같은 에러를 본적이 있을 것이다. [에러내용]Generating equals/hashCode implementation but without a call to superclass, even though this class does not extend java.lang.Object. If this is intentional, add '@EqualsAndHashCode(callSuper=false)' to your type. 이 에러는 상속을 받은 자식클래스에 발생하는 에러로서 다음과 같이 해결해줄 수 있다 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748package c..

    mac환경에서 spring boot에 lombok 설치하기

    Lombok 소개 lombok은 모두다 알다시피 getter, setter, construct등 계속해서 추가되어야하는 코드를 어노테이션을 이용하여 자동으로 생성해주는 기능을 제공하는 라이브러리이다. 설치홈페이지에 우선 jar 파일을 다운로드 받는다.https://projectlombok.org/download 다운받은 jar파일을 실행하면 자동으로 ide를 찾아서 설정해준다.설치를 완료하면 다음과 같이 ini에서 설치 여부를 확인할 수 있다.

    Maven 다운로드 및 환경변수(Path) 등록방법

    Spring boot cli에서 maven관련 명령어를 사용을 위해서는 Maven이 환경변수 되어있어야 한다. Maven을 윈도우에서 환경변수로 설정하는 방법을 알아보자. 1. 다운로드 경로 : https://www.apache.org/dyn/closer.cgi 아파치 메이븐의 다운로드 페이지가 변경되어서 조금 헷갈린다. 잘모르겠으면 여기서 받으면 된다. http://mirror.navercorp.com/apache/maven/maven-3/3.5.3/ 2. 환경변수 등록 1) 먼저 시스템 변수에서 MAVEN_HOME을 설정해준다. (이미지 참고) 2) Path에서 편집을 눌러 다음과 같이 설정한다. %MAVEN_HOME%\bin 만약 이렇게 설정하여도 정상동작 하지 않으면 다음과정을 확인한다. 1) S..

반응형