spring boot로 어플리케이션을 하나 만들고 있는데,
이전의 명칭 dao 는 repository로 쓰인다.
조회하는 것 같은 읽는 것은 Transactional 후에 readOnly를 달아두면 성능이 좋은데, 위처럼 MemberService는 1개 빼고 다 이와 같은 케이스여서 그냥 위에 readOnly=true를 달아두고, 읽는 것이 아닐 때에는 그냥 Transactional 를 달아서 차별하였다. default값이 false이기 때문에 가능하다.
저기 위의 사진과 다르게 위의 사진은 setter에 autowired를 해주었다. 저기 위의 사진은 memberrepository 값을 바꾸고 싶어도 못바꾸기 때문에 다음과 같이 사용한 것이다. 하지만, setter는 위험하다.
그래서 다음과 같이 생성자에 그냥 사용해주었다. 만약 생성자가 1개 뿐이라면 @Autowired 또한 생략해주어도 스프링이 알아서 적용해준다. 그리고 이 경우에는 private final 로 선언을 하면 값이 들어가지 않았을 때에 빨간줄이 생겨서 더 확실하게 체크할 수 있다는 장점이 있다.
저 생성자를 자동으로 만들어주는 것이
@AllArgsConstructor 이다. 그런데 이것보다 더 나은 것은
이것은 final 있는 필드만 가지고 생성자를 만들어준다. 그래서 이것으로 처리해주면 더 나은 방법이 된다.
repository 파일 또한 저렇게 바꿀 수가 있다.
@PersistenceContext는 jpa를 이용하기위해 사용한 것인데, spring boot를 사용한다면 이것을 @Autowired 로 바꿀 수 있다. 그러면 이제 아까전과 같이 그게 생성자로 붙을 수 있고 그 생성자는 @AllArgsConstructor로 바꾸고 그걸 이제 final 붙여서 @RequiredArgsConstructor로 바꿀 수 있다는 것이다.
이렇게 말이다.
Test를 할 때에 예외처리 할 때에 expected= 를 통해 처리해줄 수가 있다.
테스트를 위한 메모리 db를 이용하여 테스트를 할 수 있다.
test에 application.yml이 있따면 main의 application.yml이 아니라 이것으로 돌아가게 된다. 그래서 resources 폴더에 application.yml을 만들어주고 url을 jdbc:h2:mem:test 로 해주면 메모리 db로 돌아가게된다.
하지만, 사실 스프링부트는 저 파일이 없어도 설정된게 없다면 알아서 내부 메모리로 돌아가게 된다. 이는 h2 db를 따로 안켜도 알아서 그냥 값들을 return 해주고 북치고 장구치고 다해준다.
https://haneulnoon.tistory.com/168
몰랐던 ... 파라미터 ㅋㅋ
https://johngrib.github.io/wiki/builder-pattern/
정적 팩토리 메서드와 빌더패턴을 새로 알게 되었다.
'Spring' 카테고리의 다른 글
스프링 시큐리티 denied Page 404 뜨는 이유 (0) | 2020.07.31 |
---|---|
Spring Data JPA, Querydsl 조금 정리 (0) | 2020.07.21 |
java final static 붙이는 이유, lombok 어노테이션 (0) | 2020.07.17 |
자바 동적 파라미터화 코드 전달하기 (0) | 2020.07.14 |
부트 이것저것... (0) | 2020.06.29 |