자바9의 모듈 시스템은 모듈을 정의하는 문법을 제공한다. 이를 이용해 패키지 모음을 포함하는 모듈을 정의할 수 있다. 자바8에서는 인터페이스를 쉽게 바꿀 수 있도록 디폴트 메서드를 지원한다. 메서드 본문을 클래스 구현이 아니라 인터페이스의 일부로 포함시킨다. 하나의 예시로 List라는 인터페이스에 디폴트 메서드 sort()가 추가되어 List에 바로 sort를 할 수 있게 되었다. 자바8 이전에는 List를 구현하는 모든 클래스가 sort를 구현해야 했지만 자바8이후부터는 디폴트 sort를 구현하지 않아도 된다. 이런 경우 다중상속이 문제가 될 수 있다. 다이아몬드 상속과 같은 경우가 발생할 수 있다는 것이다. 이에 대한 해결책은 나중에 알아보도록 하자. 자바8에서는 Optional 클래스를 제공한다. ..
조회한 빈이 모두 필요할 때, List, Map List 혹은 Map을 활용해 스프링 빈에 등록된 빈들을 한번에 주입이 가능하다. Map라 하면 String에는 빈 이름이 들어간다. public class AllBeanTest { @Test void findAllBean(){ ApplicationContext ac = new AnnotationConfigApplicationContext(AutoAppConfig.class, DiscountService.class); DiscountService discountService = ac.getBean(DiscountService.class); Member member = new Member(1L, "userA", Grade.VIP); int discountPr..
클라이언트에서 서버로 데이터 전송 HTTP 메서드 활용 클라이언트에서 서버로 데이터 전송 쿼리 파라미터를 통한 데이터 전송 GET 주로 정렬 필터(검색어) 메시지 바디를 통한 데이터 전송 POST, PUT, PATCH 회원 가입, 상품 주문, 리소스 등록, 리소스 변경 4가지 상황 (예시) 정적 데이터 조회 이미지, 정적 텍스트 문서 조회는 GET사용 일반적으로 쿼리 파라미터 없이 리소스 경로로 단순하게 조회 가능 동적 데이터 조회 주로 검색, 게시판 목록에서 정렬 필터(검색어) 조회 조건을 줄여주는 필터, 조회 결과를 정렬하는 정렬 조건에 주로 사용 HTML Form을 통한 데이터 전송 회원 가입, 상품 주문, 데이터 변경 HTML Form은 GET, POST 전송 가능 HTTP API를 통한 데이터 ..