초기화시 변수에 값을 할당할 공간을 메모리에 만들게 된다.
만약 초기화나 값 할당이 정상적으로 이루어지지 않으면 NullPoniterException 에러가 뜬다.
변수에 이름을 잘못 넣거나 if문을 잘못 돌리면 이 에러가 뜬다.
null을 가진 힙메모리의 객체를 호출하면 발생하는 에러
RuntimeException 이라서 JVM에서는 알 수 없다.
NullPoniterException 을 처리하기 위한 새로운 개념
Null 체킹 로직 간소화
대체 반환 값 사전 설정 가능
Null값으로 인해 오류를 이르킬 가능성이 큰 경우 결과 없음을 명확하게 드러내기 위한 메서드의 반환타입
Wrapping 하기 때문에 메모리를 더 차지함
파라미터로 이용 X
Null 값 할당 X
멤버 변수 X
isPresent()-get() 사용 지양
if문 보다는 람다식 사용할것
반환값에다 사용함
Optional<User> user = ...;
if (user.isPresent()) {
return user.get();
} else {
return null;
}
//아래가 적절한 코드
Optional<User> user = ...;
return user.orElse(null);
or
Optional<User> user = ...;
if (user.isPresent()) {
return user.get();
} else {
throw new NoSuchElementException()
};
//아래가 적절한 코드
Optional<User> user = ...;
return user.orElseThrow(
() -> new NoSuchElementException()
);
@Autowired + 생성자
내가 필요한 생성자에 어노테이션을 적어주면(spring에게 알려주면)
spring에서 관리해주는 것
필요한 생성자를 자동으로 생성하고 초기화 해주는 어노테이션
public class ProductController {
prvaite final ProductService productService;
* @Autowired
* public ProductController(ProductService productService) {
* this.productService = productService;
* }
...
}
공식 문서에 답이 있다
로직을 짠다기보다는 세부설정이다.
외워서 작성할 필요 없다.
공식 문서의 가이드라인을 따라서 내 코드에 맞춰서 작성하면 된다.