본문 바로가기

Java

(189)
스프링 장점 스프링은 인터페이스의 다형성... 객체 지향의 다형성 개념을 활용해서 스프링의 DI(Dependencies Injection)을 사용하면 기존코드를 전혀 손대지 않고, 설정만으로 구현 클래스를 변경할 수 있다. (기능을 완전히 변경해도 기존 애플리케이션 실제 동작 코드를 변경할 필요 없이 어셈블리하는 코드만 수정하면 됨) 스프링 빈으로 등록되어 있는 경우 생성자주입을 받을 클래스의 생성자가 1개일때는 @Autowired 생략이 가능하다. public class JdbcTemplateMemberRepository implements MemberRepository{ private final JdbcTemplate jdbcTemplate; //생성자가 하나일때는 @Autowired 생략 가능 public Jd..
thymeleaf 문법 th:each java의 forEach와 같은 역할임.
Spring Bean Spring Bean 1번째 방법: 컴포넌트 스캔 @SpringBootApplication이 붙어있는 클래스가 위치한 패키지 및 하위 패키지에서 @Controller,@Service, @Repository @Component 어노테이션 사용 시 자동으로 컴포넌트 스캔. 2번째 방법: 자바코드로 직접 작성 @Configuration public class SpringConfig { @Bean public MemberService memberService(){ return new MemberService(memberRepository()); } @Bean public MemberRepository memberRepository(){ return new MemoryMemberRepository(); } }메인..
Optional https://velog.io/@injoon2019/%EC%9E%90%EB%B0%94-OptionalT%EC%99%80-OptionalInt
Test code 작성 import static org.assertj.core.api.Assertions.*;assertj : 값의 비교를 도와줌. 예제) assertThat(member).isEqualTo(result);@Test public void save(){ Member member = new Member(); member.setName("spring"); repository.save(member); Member result = repository.findById(member.getId()).get(); assertThat(member).isEqualTo(result); }예제2) - 에러나는 경우 @Test public void findByName(){ Member member1 = new Member(); memb..
함수형 인터페이스 함수형 인터페이스 함수형 인터페이스는 추상 클래스와 달리 단 하나의 추상 메소드만을 가져야한다. (하지만 default와 static 메소드의 개수에는 제약이 없다) 일반 인터페이스로 인식하는 것을 방지해주기 위해 @FunctionalInterface를 선언해준다. 자바에서는 기본적으로 4가지의 함수형 인터페이스를 지원하고 있다. Supplier : 매개변수 없이 반환값 만을 갖는다 (T get()를 추상 메소드로 가짐) Consumer : 객체 T를 매개변수로 받아서 사용하며, 반환값은 없음(void accept(T t)를 추상메소드로 가짐) Function : T를 매개변수로 받아서 처리한 후 R로 반환함 (R apply(T t)를 추상메소드로 가짐) Predicate : T를 매개변수로 받아 처리한..
메소드 참조 메소드 참조 메소드 참조는 람다 표현식이 단 하나의 메소드만을 호출하는 경우에 불필요한 매개변수를 제거하고 사용할 수 있게 해줌. 메소드 참조를 사용하면 불필요한 매개변수를 제거하고 '::'기호를 사용하여 표현할 수 있다. 클래스이름::메소드 이름 또는 참조변수이름::메소드이름클래스이름으로 사용하는 예제 IntStream stream = new Random().ints(4); //stream.forEach(e->System.out.println(e)); stream.forEach(System.out::println);참조변수이름으로 사용하는 예제 MyClass obj = new MyClass; Function func = (a) -> obj.equals(a); // 람다 표현식 Functi..
Stream Stream 이란? Java8부터 지원하는 Stream은 컬렉션, 배열 등에 대해 저장되어 있는 요소들을 하나씩 참조하여 반복적인 처리를 가능케 하는 기능이다. 1. 람다를 이용해서 코드의 양을 줄이고 간결하게 표현이 가능하다. 2. 병렬처리가 가능하다. Stream 특징 1. 원본 데이터를 변경하지 않는다. 읽기만 한다. 2. Stream은 일회용이다. 한 번 사용하면 닫혀서 재사용이 불가능 3. Stream은 작업을 내부반복으로 처리한다. 반복문이 코드상에 노출되지 않는다. Stream의 구조 1. Stream 생성 2. 중개연산 (연산 결과를 Stream형태로 반환함. 따라서 연속적으로 연결해서 사용 가능) 3. 최종연산 ex ) 데이터소스객체집합.Stream생성().중개연산().최종연산(); St..