Spring 조경민님 세션 - annotation

Ada·2022년 10월 7일
0

항해TOL

목록 보기
25/63

초기화시 변수에 값을 할당할 공간을 메모리에 만들게 된다.

만약 초기화나 값 할당이 정상적으로 이루어지지 않으면 NullPoniterException 에러가 뜬다.

NullPoniterException

  • 변수에 이름을 잘못 넣거나 if문을 잘못 돌리면 이 에러가 뜬다.

  • null을 가진 힙메모리의 객체를 호출하면 발생하는 에러

  • RuntimeException 이라서 JVM에서는 알 수 없다.

[ Optional ]

  • NullPoniterException 을 처리하기 위한 새로운 개념

  • Null 체킹 로직 간소화

  • 대체 반환 값 사전 설정 가능

  • Null값으로 인해 오류를 이르킬 가능성이 큰 경우 결과 없음을 명확하게 드러내기 위한 메서드의 반환타입

  • Wrapping 하기 때문에 메모리를 더 차지함

    • Optional은 무적이 아님

  • 파라미터로 이용 X

  • Null 값 할당 X

    • null값이 발생할 가능성이 있을 때 우회해서 다른 값을 돌려주기 위한 것이지 null값을 받기 위한 것이 아님
  • 멤버 변수 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()
);

추천해주신 링크
https://blogs.oracle.com/javamagazine/post/12-recipes-for-using-the-optional-class-as-its-meant-to-be-used


[ Dependency Injection(의존성 주입) ]

@Autowired + 생성자
내가 필요한 생성자에 어노테이션을 적어주면(spring에게 알려주면)
spring에서 관리해주는 것

@Requiredargsconstructor

필요한 생성자를 자동으로 생성하고 초기화 해주는 어노테이션


public class ProductController {
	 
     prvaite final ProductService productService;
     
     * @Autowired
     * public ProductController(ProductService productService) {
     *	this.productService = productService;
     * } 
...
}
  • ** 부분 생성자 코드를 lombok에서 알아서 만들어 주는
    어노테이션이 @Requiredargsconstructor

[ Annotation ]

공식 문서에 답이 있다

  • @Configuration -> 클래스
    @Bean -> 메서드 (1개이상)

@Configuration

  • 로직을 짠다기보다는 세부설정이다.
    외워서 작성할 필요 없다.

  • 공식 문서의 가이드라인을 따라서 내 코드에 맞춰서 작성하면 된다.

profile
백엔드 프로그래머

0개의 댓글