반응형

Backend 59

[Spring Boot] FeignClient와 ExceptionHandler | FeignClient의 응답값 그대로 반환하기

목차 프로젝트를 진행하다보니 FeignClient로 다른 서비스를 호출하는 일이 생겼는데, 자식서비스가 부모서비스에 FeignClient로 API호출 시 부모서비스에서 Exception이 터지면 그대로 자식서비스도 예외가 발생한다. 에러 응답포맷이 정해져있기 때문에 부모서비스의 에러메시지를 자식서비스에서도 그대로 반환해주면 어떨까?! 하고 생각했다 기존코드 application.yml feign 설정 부분만 가지고왔다 ... feign: parent-api: url: http://localhost:8081 httpclient: follow-redirects: true ... ExceptionController.java CustomException이 발생하면 해당 handler에서 처리하게된다 @RestC..

Backend 2022.07.29

모던 자바 인 액션 - 스트림 활용

목차 필터링 Predicate 필터링 filter는 프레디케이트(boolean을 반환하는 함수)를 인수로 받아서 true로 반환되는 요소를 모은 스트림을 반환한다 List vegetarianMenu = menu.stream() .filter(Dish::isVegetarian) .collect(toList()); Distict 필터링 distinct는 객체를 hashCode, equals로 비교하여 고유한 요소를 모은 스트림을 반환한다 List numbers = Arrays.asList(1, 2, 1, 3, 3, 2, 4); numbers.stream() .filter(i -> i % 2 == 0) .distinct() .forEach(System.out::println); 슬라이싱 칼로리 순으로 정렬된 ..

Backend 2022.07.16

모던 자바 인 액션 - Stream(스트림)이란?, 스트림특징, 내부반복/외부반복, 게으른중간연산

목차 Stream 이란? SELECT name FROM dishes WHERE calorie < 400 위 SQL문은 칼로리가 낮은 요리명을 선택하라는 질의이다. SQL에서는 요리의 속성(칼로리)를 이용하여 어떻게 필터링할 것인지 개발자가 직접 구현하지 않아도 된다. 하지만 자바에서 필터링하려면 반복문을 돌려서 처리해야한다. 요소가 많은 컬렉션이라면 어떻게할까?? 똑같이 반복문으로 돌려서 처리하면 굉장히 많은 시간이 필요할 것이고, 작업을 병렬로 처리해야 성능을 높일 수 있을 것이다. 저칼로리로 요리를 필터링하고, 칼로리 순서대로 요리를 정렬하는 코드를 작성해보자. //1. 저칼로리 요리 필터링 //2. 칼로리로 요리 정렬 ---------------------------------------------..

Backend 2022.07.11

모던 자바 인 액션 - 람다표현식, 함수형인터페이스

목차 기억하자. 람다는 기술적으로 자바8 이전의 자바로 할 수 없었던 일을 제공하는 것이 아니다. 람다 표현식 람다 표현식은 메서드로 전달할 수 있는 익명함수를 단순화한 것이다. 람다 표현식은 이름은 없지만, 파라미터, 바디, return값, 예외를 가질 수 있다. //기존의 익명클래스를 이용한 정렬 Comparator byWeight = new Comparator() { public int compare(Apple a1, Apple a2) { return a1.getWeight().compareTo(a2.getWeight()); //⭐ } }; //람다를 이용한 정렬 Comparator byWeight = (Apple a1, Apple a2) -> a1.getWeight().compareTo(a2.ge..

Backend 2022.07.10

모던 자바 인 액션 - 람다 탄생 과정

목차 문제상황과 람다 탄생 과정 재고 관리 애플리케이션을 만드려고한다. 농부는 녹색사과를 찾는 기능만 있으면 된다고했다. 하루 지나니 150그램 이상인 사과를 찾는 기능도 있어야한다고한다. 또 하루 지나니 150그램 이상이면서 빨간 사과를 찾는 기능이 있어야한다고한다. 사용자의 요구에 유연한 애플리케이션을 만드려면 어떻게 해야할까? 1번째 시도 : 계속 변화하는 메서드 요청1) 녹색사과 필터링 메서드 만들어주세요 응답1) 네~ public List filterGreenApples(List inventory){ List result = new ArrayList(); for (Apple apple : inventory) { if(GREEN.equals(apple.getColor())){ result.add(..

Backend 2022.05.06

Spring DI(의존주입), @Autowired (의존 자동주입)

목차 의존주입 방법 설정 클래스에서 직접 의존 주입 설정클래스에서 의존객체를 직접 주입해주는 방법이다. @Configuration public class AppCtx { @Bean public MemberDao memberDao(){ return new MemberDao(); } @Bean public MemberRegisterService memberRegisterService(){ return new MemberRegisterService(memberDao()); } @Bean public ChangePasswordService changePasswordService(){ ChangePasswordService changePasswordService = new ChangePasswordService(..

Backend 2022.04.02

Spring DI(의존주입), Container(객체 조립)

목차 의존이란? public class MemberRegisterService { //객체 직접 생성 private MemberDao memberDao = new MemberDao(); public void register(String email){ //이메일 중복 체크 Member member = memberDao.selectByEmail(email); ... //회원가입 처리 ... } } MemberRegisterService 클래스는 register() 메서드 내부에서 MemberDao의 selectByEmail() 메서드를 사용한다. MemberDao의 selectByEmail() 메서드 이름을 findByEmail()로 변경한다면? -> MemberRegisterService의 소스코드도 변경..

Backend 2022.03.28

Spring Container(ApplicationContext)와 Bean

목차 @Configuration 이 어노테이션을 클래스에 붙이면 해당 클래스를 스프링 설정 클래스로 등록한다. @Bean 빈 스프링이 생성하는 객체를 빈이라고 부른다. @Bean을 메서드에 붙이면 해당 메서드가 생성한 객체를 스프링이 관리하는 빈 객체로 등록한다. @Configuration //AppContext.java를 스프링 설정 클래스로 등록한다 public class AppContext { @Bean public Greeter greeter(){ Greeter greeter = new Greeter(); greeter.setFormat("%s, 안녕하세요."); return greeter; } } Greeter타입이고, "greeter" 라는 이름의 Bean이 스프링 컨테이너에 등록된다. App..

Backend 2022.03.28

자바, Spring Boot로 크롤링하기 - Selenium 이용 (동적페이지), 속도 개선 방법

목차 이전글 자바, Spring Boot로 크롤링하기 - Jsoup 이용 (정적페이지) 목차 Jsoup이란? jsoup은 Dom메서드와 CSS Selector를 사용하여 HTML의 데이터를 추출할 수 있는 Java 라이브러리이다. 크롤링해보기 크롤링할 URL 준비, Dom Selector 찾기 나는 단어장 앱을 만들려고한다. 단 lotuus.tistory.com Selenium이란? 셀레니움은 사실 웹사이트 테스트 도구이다. 사람이 손으로 일일이 브라우저를 켜서 웹사이트를 확인하고, 수정하고, 테스트하고... 하는게 번거로워서 코드를 작성하여 웹브라우저를 동작시켜 테스트하자! 하고 나온 기술인데, 웹사이트가 동적으로 변하는 상황을 해결하기 위해 셀레니움을 크롤링에서 활용하게 되었다. 크롤링 해보기 Spr..

Backend 2022.03.08

자바, Spring Boot로 크롤링하기 - Jsoup 이용 (정적페이지)

목차 다음글 자바, Spring Boot로 크롤링하기 - Selenium 이용 (동적페이지), 속도 개선 방법 목차 이전글 자바, Spring Boot로 크롤링하기 - Jsoup 이용 (정적페이지) 목차 Jsoup이란? jsoup은 Dom메서드와 CSS Selector를 사용하여 HTML의 데이터를 추출할 수 있는 Java 라이브러리이다. 크롤링해보기 크 lotuus.tistory.com Jsoup이란? jsoup은 Dom메서드와 CSS Selector를 사용하여 HTML의 데이터를 추출할 수 있는 Java 라이브러리이다. 크롤링해보기 크롤링할 URL 준비, Dom Selector 찾기 나는 단어장 앱을 만들려고한다. 단어에 해당하는 문장을 표시해주고, 단어를 맞추면 된다. 이 단어들이 포함된 문장들을 ..

Backend 2022.03.07
반응형