[JAVA] Optional Class

유존돌돌이·2022년 2월 25일
0

공부

목록 보기
12/22
post-thumbnail

Optional Class

Optional 클래스는 Integer나 Double 클래스처럼 'T'타입의 객체를 포장해 주는 래퍼 클래스(Wrapper class)
따라서 Optional 인스턴스는 모든 타입의 참조 변수를 저장할 수 있다.

이러한 Optional 객체를 사용하면 예상치 못한 NullPointerException 예외를 제공되는 메소드로 간단히 회피 가능

즉, 복잡한 조건문 없이도 널(null) 값으로 인해 발생하는 예외를 처리할 수 있게 됨.

아래의 예는 Spring Security login 부분에서
user의 이름으로 정보를 가져오는 Optional의 추상 메서드를 선언하고
이를 가져와서 해당 정보가 없으면 orElseThrow한 부분이다.

Repository

public interface UserRepository extends JpaRepository<User, Integer>{
	// SELECT * FROM user WHERE username=1?;
	Optional<User> findByUsername(String username);
}

선언부

public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
	User user = userRepository.findByUsername(username).orElseThrow(()->{
		return new UsernameNotFoundException("해당 유저를 찾을 수 없습니다.");
	});
	return new PrincipalDetail(user); // 리턴이 되면 세션에 유저 정보가 저장이됨.
}

0개의 댓글