메소드체이닝이란?
메소드를 줄줄이 엵어서 메소드를 계속해서 사용할 수 있게끔 하는 방법
setter() 메소드에서 void가 아닌 세팅된 객체를 리턴
obj.orElseThrow(() -> new Exception("throw exception"));
findById(4).ifPresent((user) -> System.out.println(user.getName()));
1. Optional 변수에 null 할당 금지
2. 원시 타입의 Optional에는 OptionalInt, OptionalLong, OptionalDouble 사용을 고려할 것
OptionalInt maybeInt = OptionalInt.of(2);
OptionalLong maybeLong = OptionalLong.of(3L);
OptionalDouble maybeDouble = OptionalDouble.empty();
3. 값에 대해 미리 정의된 규칙(제약사항)이 있는 경우에는 filter 사용을 고려할 것
Optional.ofNullable(username)
.filter(this::isOverLength)
.isPresent();
enum 생성
enum 값들 세팅(값들 사이엔 콤마[,]를 이용해 연결하고, 마지막 값엔 세미콜론[;]로 닫기)
enum 값의 순서대로 전역 변수 선언
1. 생성자와 get을 직접 생성해주는 방법
public enum Num {
// enum명(전역변수1, 전역변수2)
ONE("mon", 10),
TWO("tue", 20);
private final String name;
private final int value;
private Num(String name, int value) {
this.name = name;
this.value = value;
}
public String getName() {
return this.name;
}
public int getValue() {
return this.value;
}
}
2. lombok을 이용해 생성해주는 방법
@Getter
@AllArgsConstructor
public enum Num {
ONE("one", 10),
TWO("two", 20);
private final String name;
private final int value;
}
enum 호출
Num.ONE
values()
enum의 모든 값들을 배열로 만들어 리턴해줌
for (Num num : Num.values()) {
System.out.println(Num.getName());
// one
// two
}
ordinal()
Num.ONE.ordinal() // 0
valueOf(), name()
Num.valueOf("ONE").getName() // one
Num.valueOf("ONE").name() // ONE
compareTo()
Num.ONE.compareTo(Num.ONE) // 0
Num.ONE.compareTo(Num.TWO) // -1
ORDINAL
enum Gender {
MALE, // 1
FEMALE; // 2
}
@Enumerated(EnumType.ORDINAL)
private Gender gender;
STRING
enum Gender {
MALE, // "MALE"
FEMALE; // "FEMALE"
}
@Enumerated(EnumType.STRING)
private Gender gender;
Callback URL이란?
서버측에서 클라이언트의 어떤 URL로 데이터를 보낼지 정해놓은 주소
// API 호출을 위한 인스턴스 선언
RestTemplate restTemplate = new RestTemplate();
String url = //Webhook URL
// 메시지 정보
Map<String,Object> sendMsg = new HashMap<String,Object>();
sendMsg.put("username", "이름");
sendMsg.put("text", "보낼 내용");
HttpEntity<Map<String,Object>> entity = new HttpEntity<Map<String,Object>>(sendMsg);
restTemplate.exchange(url, HttpMethod.POST, entity, String.class);
HttpEntity란?
헤더와 바디로 이루어진 HTTP request, response 엔티티
1. API 테스트 시 406 Not Acceptable 오류가 발생?
2. PropertyValueException 예외란?
3. DataIntegrityViolationException 예외란?
데이터 바인딩이란?
두 개의 데이터 소스(또는 동일한 데이터에 대한 두 개의 개별 표현)를 함께 연결하고
동기화 상태를 유지하는 일반적인 기술
- 단방향 바인딩
적절한 Event를 통해 데이터 흐름이 단방향으로 이루어지고(부모 -> 자식)
뷰가 바로 업데이트 되지 않는다.- 양방향 바인딩
데이터 변경에 따라 프레임워크를 통해 양방향으로 이루어지며(부모 <-> 자식)
뷰가 즉각 업데이트 된다.
4. NoSuchElementException 예외란?
5. 경우에 따라 예외를 강제로 실행 시키기
throw new NullPointerException();