전체 글
-
@AutowiredSpring 2023. 1. 30. 12:55
@Component public class OrderServiceImpl implements OrderService { private final MemberRepository memberRepository; private final DiscountPolicy discountPolicy; @Autowired public OrderServiceImpl(MemberRepository memberRepository, DiscountPolicy discountPolicy) { this.memberRepository = memberRepository; this.discountPolicy = discountPolicy; } } [코드1. 생성자 주입] //테스트에서 사용 예시 @SpringBootTest class ..
-
List.of()Java 2023. 1. 30. 12:51
List.of()는 배열들(Arrays)을 List로 변환할 때 사용한다. @Test @DisplayName("글 여려개 조회") void getList(){ //given boardRepository.saveAll(List.of( SpringBoard.builder() .title("제목3") .content("내용3") .build(), SpringBoard.builder() .title("제목2") .content("내용2") .build(), SpringBoard.builder() .title("제목") .content("내용") .build() )); //when List list = boardService.getList(); //then assertEquals(3, list.size()); }..
-
stream()Java 2023. 1. 30. 12:39
스트림(Stream) : 다양한 데이터 소스를 표준화된 방법으로 다루기 위한 것 - 자바 1.8 이전에는 다양한 컬렉션 클래스들이 서로 사용방이 달라서 표준화가 제대로 이뤄지지 않았었는데 자바 1.8이 등장하면서 표준화가 완벽하게 이뤄짐. 자바8부터 Stream 을 사용 할 수 있습니다. 기존에 자바 컬렉션이나 배열의 원소를 가공할떄, for문, foreach 등으로 원소 하나씩 골라내여 가공을 하였다면, Stream 을 이용하여 람다함수 형식으로 간결하고 깔끔하게 요소들의 처리가 가능합니다. 배열의 원소를 가공하는데 있어 map, filter, sorted 등 이 있습니다. map은 요소들을 특정조건에 해당하는 값으로 변환해 줍니다. 요소들을 대,소문자 변형 등 의 작업을 하고 싶을떄 사용 가능 합니다..
-
람다(lambda)Java 2023. 1. 30. 12:35
익명함수 (매개변수1,...) -> {함수;} // 람다식 X public int sum(int a, int b) { return a + b; } // 람다식 O (int a, int b) -> {return a + b;} 엄청 간편하지 않은가? 위와같이 함수의 이름 없이 람다식으로 구현한 함수를 일명 익명함수 라고 하기도 한다. 만약 어떤 변수에 a 와 b의 합을 구하고 싶다면 다음과 같이 하면 된다. 다른 예시 public SpringBoard get(Long id){ // SpringBoard springBoard = boardRepository.findById(id); //Optional로 반환해줘야 하기 때문에 오류 발생. SpringBoard springBoard = boardRepositor..
-
entity와 Dto의 차이Spring 2022. 12. 23. 19:05
1. entity 클래스은 DB와 직접적으로 상호작용하는 클래스이다. 2. dto는 클라이언트의 요청과 응답 데이터를 관리하는(처리하는) 클래스이다. 3. entity 클래스는 DB 데이터를 직접적으로 다루기 때문에 Service 클래스에서 사용된다. 4. dto 클래스는 사용자의 요청을 직접적으로 다루기 때문에 Controller 클래스에서 사용된다. 정리하자면. - DB에 데이터를 저장하거나, DB에 있는 값을 가져오고 싶다면 주로 entity 클래스를 사용하고 - 클라이언트의 요청 데이터를 처리하고 싶을 때는 주로 dto 클래스를 사용한다.
-
request 스코프와 ObjectProviderSpring 2022. 12. 6. 00:06
request 스코프는 스프링 컨테이너에 등록되어 있는 빈 인스턴스를 있는 그대로 @Autowired 하게 되면 에러가 발생한다. (BeanCreationException) 왜냐하면 스프링 컨테이너에 있는 빈 인스턴스는 이미 활성화 되어 있는걸 가져오는 방식인데, 빈 인스턴스가 request Http 요청보다 먼저 등록이 되어버리면 Http 요청이 활성화 되어 있지 않은 상태에서 빈 인스턴스를 호출하게 되는 것이므로 에러가 발생한다. 이를 조금 더 쉽게 설명하자면 Http 요청에는 active와 active 되지 않은 상태로 나눌 수 있다. 우리가 request http 요청을 호출하기 전에는 active 되지 않은 상태일 것이다. 그런데 이 상황에 빈 인스턴스가 미리 들어와 있으니 request sco..